失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【Python项目】520必备表白神器合集 程序员的浪漫 | 附带源码

【Python项目】520必备表白神器合集 程序员的浪漫 | 附带源码

时间:2024-03-10 06:20:35

相关推荐

【Python项目】520必备表白神器合集 程序员的浪漫 | 附带源码

相关文件

关注小编,私信小编领取哟!

当然别忘了一件三连哟~~

公众号:Python日志

可以关注小编公众号,会不定时的发布一下Python小技巧,还有很多资源可以免费领取哟!!

源码领取:加Python学习交流群:773162165可以领取哟

开发工具

Python版本:3.7.8

相关模块:

turtle模块;

time模块;

pyttsx3模块;

以及一些python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

一:画爱心

效果展示

代码展示

import turtleimport time# 画心形圆弧def hart_arc():for i in range(200):turtle.right(1)turtle.forward(2)def move_pen_position(x, y):turtle.hideturtle()# 隐藏画笔(先)turtle.up()# 提笔turtle.goto(x, y) # 移动画笔到指定起始坐标(窗口中心为0,0)turtle.down() # 下笔turtle.showturtle()# 显示画笔love = input("请输入表白话语,默认为‘I Love You’:")signature = input("请签署你的大名,不填写默认不显示:")if love == '':love = 'I Love You'time.sleep(1)# 初始化turtle.setup(width=800, height=500)# 窗口(画布)大小turtle.color('red', 'pink')# 画笔颜色turtle.pensize(3) # 画笔粗细turtle.speed(1)# 描绘速度# 初始化画笔起始坐标move_pen_position(x=0,y=-180) # 移动画笔位置turtle.left(140) # 向左旋转140度turtle.begin_fill()# 标记背景填充位置# 画心形直线( 左下方 )turtle.forward(224) # 向前移动画笔,长度为224# 画爱心圆弧hart_arc()# 左侧圆弧turtle.left(120) # 调整画笔角度hart_arc()# 右侧圆弧# 画心形直线( 右下方 )turtle.forward(224)turtle.end_fill() # 标记背景填充结束位置# 在心形中写上表白话语move_pen_position(0,0)# 表白语位置turtle.hideturtle()# 隐藏画笔turtle.color('#CD5C5C', 'pink')# 字体颜色# font:设定字体、尺寸(电脑下存在的字体都可设置) align:中心对齐turtle.write(love, font=('Arial', 30, 'bold'), align="center")# 签写署名if signature != '':turtle.color('red', 'pink')time.sleep(2)move_pen_position(180, -180)turtle.hideturtle() # 隐藏画笔turtle.write(signature, font=('Arial', 20), align="center")# 点击窗口关闭程序window = turtle.Screen()window.exitonclick()

二:让女神欲罢不能的套路

效果展示

代码展示

import turtleimport time# 清屏函数def clear_all():turtle.penup()turtle.goto(0, 0)turtle.color('white')turtle.pensize(800)turtle.pendown()turtle.setheading(0)turtle.fd(300)turtle.bk(600)# 重定位海龟的位置def go_to(x, y, state):turtle.pendown() if state else turtle.penup()turtle.goto(x, y)# 画线# state为真时海龟回到原点,为假时不回到原来的出发点def draw_line(length, angle, state):turtle.pensize(1)turtle.pendown()turtle.setheading(angle)turtle.fd(length)turtle.bk(length) if state else turtle.penup()turtle.penup()# 画箭羽def draw_feather(size):angle = 30# 箭的倾角feather_num = size//6# 羽毛的数量feather_length = size // 3# 羽毛的长度feather_gap = size//10 # 羽毛的间隔for i in range(feather_num):draw_line(feather_gap, angle+180, False) # 箭柄,不折返draw_line(feather_length, angle + 145, True) # 羽翼,要折返draw_line(feather_length, angle + 145, False)draw_line(feather_num*feather_gap, angle, False)draw_line(feather_length, angle + 145 + 180, False)for i in range(feather_num):draw_line(feather_gap, angle+180, False) # 箭柄,不折返draw_line(feather_length, angle - 145, True) # 羽翼,要折返draw_line(feather_length, angle - 145, False)draw_line(feather_num*feather_gap, angle, False)draw_line(feather_length, angle - 145 + 180, False)# 画爱心def draw_heart(size):turtle.color('red', 'pink')turtle.pensize(2)turtle.pendown()turtle.setheading(150)turtle.begin_fill()turtle.fd(size)turtle.circle(size * -3.745, 45)turtle.circle(size * -1.431, 165)turtle.left(120)turtle.circle(size * -1.431, 165)turtle.circle(size * -3.745, 45)turtle.fd(size)turtle.end_fill()def hart_arc():for i in range(200):turtle.right(1)turtle.forward(2)# 画箭def draw_arrow(size):angle = 30turtle.color('black')draw_feather(size)turtle.pensize(4)turtle.setheading(angle)turtle.pendown()turtle.fd(size*2)# 一箭穿心# 箭的头没有画出来,而是用海龟来代替def arrow_heart(x, y, size):go_to(x, y, False)draw_heart(size*1.15)turtle.setheading(-150)turtle.penup()turtle.fd(size*2.2)draw_heart(size)turtle.penup()turtle.setheading(150)turtle.fd(size * 2.2)draw_arrow(size)# 画出发射爱心的小人def draw_people(x, y):turtle.penup()turtle.goto(x, y)turtle.pendown()turtle.pensize(2)turtle.color('black')turtle.setheading(0)turtle.circle(60, 360)turtle.penup()turtle.setheading(90)turtle.fd(75)turtle.setheading(180)turtle.fd(20)turtle.pensize(4)turtle.pendown()turtle.circle(2, 360)turtle.setheading(0)turtle.penup()turtle.fd(40)turtle.pensize(4)turtle.pendown()turtle.circle(-2, 360)turtle.penup()turtle.goto(x, y)turtle.setheading(-90)turtle.pendown()turtle.fd(20)turtle.setheading(0)turtle.fd(35)turtle.setheading(60)turtle.fd(10)turtle.penup()turtle.goto(x, y)turtle.setheading(-90)turtle.pendown()turtle.fd(40)turtle.setheading(0)turtle.fd(35)turtle.setheading(-60)turtle.fd(10)turtle.penup()turtle.goto(x, y)turtle.setheading(-90)turtle.pendown()turtle.fd(60)turtle.setheading(-135)turtle.fd(60)turtle.bk(60)turtle.setheading(-45)turtle.fd(30)turtle.setheading(-135)turtle.fd(35)turtle.penup()# 第一个画面,显示文字def page0():turtle.penup()turtle.goto(-350, 0)turtle.color('black')turtle.write('专属于我们的情人节', font=('宋体', 60, 'normal'))time.sleep(3)# 第二个画面,显示发射爱心的小人def page1():turtle.speed(10)draw_people(-250, 20)turtle.penup()turtle.goto(-150, -30)draw_heart(14)turtle.penup()turtle.goto(-20, -60)draw_heart(25)turtle.penup()turtle.goto(250, -100)draw_heart(45)turtle.hideturtle()time.sleep(3)# 最后一个画面,一箭穿心def page2():turtle.speed(1)turtle.penup()turtle.goto(-200, -200)turtle.color('blue')turtle.pendown()turtle.write('大笨蛋 小笨蛋', font=('wisdom', 50, 'normal'))turtle.penup()turtle.goto(0, -190)draw_heart(10)arrow_heart(20, -60, 51)turtle.showturtle()def main():turtle.setup(900, 500)page0()clear_all()page1()clear_all()page2()turtle.done()main()

三:文字生成喜欢的人的照片

效果展示

代码展示

import osfrom tkinter import Tk, Menu, Label, Buttonfrom tkinter.filedialog import askopenfilenamesfrom tkinter.messagebox import showinfofrom make_love_you_img import gen_love_you_imgIMGPATH = ''class GUI(object):def __init__(self, window):self.window = windowself.window.title('表白神器')self.window.geometry('300x200')menubar = Menu(self.window)# 定义空菜单filemenu = Menu(menubar, tearoff=0)filemenu.add_command(label='帮助', command=self.helpme)filemenu.add_separator()# 显示self.l = Label(window, text='')self.l.pack(padx=5, pady=10) # 固定窗口位置# 选择图片btn1 = Button(window, text='选择图片', width=15, height=2, command=self.get_img)btn1.pack()# 生成图片self.send_btn = Button(window, text='生成表白图片', width=15, height=2, command=self.gen_img)self.send_btn.pack()def helpme(self):showerror('帮助', '请关注「Python日志」公众号')def get_img(self):global IMGPATH# 选择文件filenames = askopenfilenames(filetypes=(("jpeg img", "*.jpeg"), ("jpg img", "*.jpg"), ("png img", "*.png")))if len(filenames) > 0:fnlist = [fn for fn in filenames]fnstr = '\n'.join(fnlist)self.l.config(text=fnstr)IMGPATH = fnlistelse:self.l.config(text='目前没有选择任何图片文件')def gen_img(self):global IMGPATHrespathlist = []for imgpath in IMGPATH:filepath,tempfilename = os.path.split(imgpath)filename,extension = os.path.splitext(tempfilename)savepath = f'{filename}_gen{extension}'gen_love_you_img(imgpath, savepath)respathlist.append(savepath)respath = ' '.join(respathlist)showinfo('完成生成', f'表白图片已生成,路径为:{respath}')if __name__ == '__main__':# 创建窗口window = Tk()GUI(window)# 显示窗口 必须在所有控件后window.mainloop()

四:表白神器

效果展示

代码展示

import pygameimport randomimport sys# 根据背景图大小,设置游戏屏幕大小WIDTH, HEIGHT = 1000, 625screen = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32)pygame.display.set_caption(' 520表白代码 公众号:Python日志 学习交流群:773162165')# 添加文本信息def title(text, screen, color=(255, 255, 255)):font = pygame.font.SysFont('SimHei', 29)textRender = font.render(text, True, color)# 初始化文字的坐标screen.blit(textRender, (240, 210))# 按钮def button(text, x, y, w, h, color, screen, color_text):pygame.draw.rect(screen, color, (x, y, w, h))font = pygame.font.SysFont('SimHei', 20)textRender = font.render(text, True, color_text)textRect = textRender.get_rect()textRect.center = (int(x + w / 2), int(y + h / 2))screen.blit(textRender, textRect)# 生成随机的位置坐标def get_random_pos():x, y = random.randint(20, 620), random.randint(20, 460)return x, y# 点击答应后显示的页面def show_like_interface(screen):screen.fill((255, 255, 255))background1 = pygame.image.load('爱你.png').convert()screen.blit(background1, (0, 0))pygame.display.update()while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()# 点击不答应按钮后显示的页面def show_unlike_interface(screen):screen.fill((255, 255, 255))background_1 = pygame.image.load('愚人节快乐.png').convert()screen.blit(background_1, (0, 0))pygame.display.update()while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()def main():num = 0pygame.init()clock = pygame.time.Clock()# 添加背景音乐pygame.mixer.music.load('you.mp3')pygame.mixer.music.play(-1, 40)pygame.mixer.music.set_volume(0.4)# 设置不同意按钮属性unlike_pos_x = 130unlike_pos_y = 375unlike_pos_width = 450unlike_pos_height = 55unlike_color = (115, 76, 243)# 设置同意按钮属性like_pos_x = 130like_pos_y = 280like_pos_width = 450like_pos_height = 55like_color = (115, 76, 243)running = Truewhile running:# 填充窗口screen.fill((255, 255, 255))# 添加背景图background = pygame.image.load('bg.jpg').convert()screen.blit(background, (0, 0))# 获取鼠标坐标pos = pygame.mouse.get_pos()if unlike_pos_x + unlike_pos_width + 5 > pos[0] > unlike_pos_x - 5 and pos[1] < unlike_pos_y + unlike_pos_height + 5 and pos[1] > unlike_pos_y - 5:while True:if num > 5:breaknum += 1unlike_pos_x, unlike_pos_y = get_random_pos()if unlike_pos_x + unlike_pos_width + 5 > pos[0] > unlike_pos_x - 5 and pos[1] < unlike_pos_y + unlike_pos_height + 5 and pos[1] > unlike_pos_y - 5:continuebreak# 设置标题及按钮文本信息title('我喜欢你', screen)button('A.嗯嗯 我也是', like_pos_x, like_pos_y, like_pos_width, like_pos_height, like_color, screen,(255, 255, 255))# 设置小套路文本if num < 10:button('B.你是个好人……', unlike_pos_x, unlike_pos_y, unlike_pos_width, unlike_pos_height,unlike_color, screen, (255, 255, 255))if num > 9:button('B. 只好同意喽', unlike_pos_x, unlike_pos_y, unlike_pos_width, unlike_pos_height,unlike_color, screen, (255, 255, 255))# 设置套路文本if num == 1:button('操作提示:请直接点击答案,切勿手抖!', unlike_pos_x, unlike_pos_y - 50, unlike_pos_width, unlike_pos_height,(255, 255, 255), screen, (192, 0, 0))if num == 2:button('咋又抖了?', unlike_pos_x, unlike_pos_y - 50, unlike_pos_width, unlike_pos_height,(255, 255, 255), screen, (192, 0, 0))if num == 3:button('点就完事了,bie 墨迹', unlike_pos_x, unlike_pos_y - 50, unlike_pos_width, unlike_pos_height,(255, 255, 255), screen, (192, 0, 0))if num == 4:button('确定要点这个吗?', unlike_pos_x, unlike_pos_y - 50, unlike_pos_width, unlike_pos_height,(255, 255, 255), screen, (192, 0, 0))if num == 5:button('好险!差点儿就点到了呢!', unlike_pos_x, unlike_pos_y - 50, unlike_pos_width, unlike_pos_height,(255, 255, 255), screen, (192, 0, 0))if num == 6:button('哎,算了,不躲了,你选吧', unlike_pos_x, unlike_pos_y - 50, unlike_pos_width, unlike_pos_height,(255, 255, 255), screen, (192, 0, 0))# 点击套路按钮if num > 5:if unlike_pos_x + unlike_pos_width + 5 > pos[0] > unlike_pos_x - 5 and pos[1] < unlike_pos_y + unlike_pos_height + 5 and pos[1] > unlike_pos_y - 5:if event.type == pygame.MOUSEBUTTONDOWN:show_unlike_interface(screen)for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()# 点击同意按钮if like_pos_x + like_pos_width + 5 > pos[0] > like_pos_x - 5 and like_pos_y + like_pos_height + 5 > pos[1] > like_pos_y - 5:if event.type == pygame.MOUSEBUTTONDOWN:show_like_interface(screen)pygame.display.flip()pygame.display.update()clock.tick(60)main()

五:玫瑰花表白

效果展示

代码展示

import turtleturtle.penup()turtle.left(90)turtle.fd(200)turtle.pendown()turtle.right(90)turtle.fillcolor('red')turtle.begin_fill()turtle.circle(10, 180)turtle.circle(25, 110)turtle.left(50)turtle.circle(60, 45)turtle.circle(20, 170)turtle.right(24)turtle.fd(30)turtle.left(10)turtle.circle(30, 110)turtle.fd(20)turtle.left(40)turtle.circle(90, 70)turtle.circle(30, 150)turtle.right(30)turtle.fd(15)turtle.circle(80, 90)turtle.left(15)turtle.fd(45)turtle.right(165)turtle.fd(20)turtle.left(155)turtle.circle(150, 80)turtle.left(50)turtle.circle(150, 90)turtle.end_fill()# 花瓣1turtle.left(150)turtle.circle(-90, 70)turtle.left(20)turtle.circle(75, 105)turtle.setheading(60)turtle.circle(80, 98)turtle.circle(-90, 40)# 花瓣2turtle.left(180)turtle.circle(90, 40)turtle.circle(-80, 98)turtle.setheading(-83)# 叶子1turtle.fd(30)turtle.left(90)turtle.fd(25)turtle.left(45)turtle.fillcolor('green')turtle.begin_fill()turtle.circle(-80, 90)turtle.right(90)turtle.circle(-80, 90)turtle.end_fill()turtle.right(135)turtle.fd(60)turtle.left(180)turtle.fd(85)turtle.left(90)turtle.fd(80)# 叶子2turtle.right(90)turtle.right(45)turtle.fillcolor('green')turtle.begin_fill()turtle.circle(80, 90)turtle.left(90)turtle.circle(80, 90)turtle.end_fill()turtle.left(135)turtle.fd(60)turtle.left(180)turtle.fd(60)turtle.right(90)turtle.circle(200, 60)turtle.hideturtle()turtle.done()

六:一箭穿心

效果展示

代码展示

import turtle as tt.color('red','pink')t.begin_fill()t.width(5)t.left(135)t.fd(100)t.right(180)t.circle(50,-180)t.left(90)t.circle(50,-180)t.right(180)t.fd(100)t.pu()t.goto(50,-30)t.pd()t.right(90)t.fd(100)t.right(180)t.circle(50,-180)t.left(90)t.circle(50,-180)t.right(180)t.fd(100)t.end_fill()t.hideturtle()t.pu()t.goto(250,-70)t.pd()# 箭尾t.color('yellow')t.width(5)t.left(70)t.fd(50)t.fd(-50)t.left(70)t.fd(50)t.fd(-50)t.left(145)t.fd(20)t.left(145)t.fd(50)t.fd(-50)t.left(70)t.fd(50)t.fd(-50)t.left(145)t.fd(20)t.left(145)t.fd(50)t.fd(-50)t.left(70)t.fd(50)t.fd(-50)t.left(145)t.width(3)t.fd(220)t.right(90)t.pu()t.fd(10)t.pd()t.left(90)t.pu()t.fd(90)t.left(90)t.fd(10)t.left(90)t.pd()t.fd(-100)# 箭头t.begin_fill()t.left(-30)t.fd(-15)t.right(-40)t.fd(-50)t.right(-165)t.fd(-50)t.end_fill()# 文字t.color('red')t.pu()t.goto(-150,30)t.pd()t.write('I LOVE YOU', move=False, align='center',font=("Times", 18, "bold"))t.hideturtle()t.done()

七:爱心表白树

效果展示

代码展示

import turtleimport random# 画爱心def love(x, y):lv = turtle.Turtle()lv.hideturtle()lv.up()# 定位lv.goto(x, y)# 画圆弧def curvemove():for i in range(20):lv.right(10)lv.forward(2)lv.color('red', 'pink')lv.speed(10000000)lv.pensize(1)lv.down()lv.begin_fill()lv.left(140)lv.forward(22)curvemove()lv.left(120)curvemove()lv.forward(22)# 画完复位lv.left(140)lv.end_fill()# 画树def tree(branchLen, t):# 剩余树枝太少要结束递归if branchLen > 5:# 如果树枝剩余长度较短则变绿if branchLen < 20:t.color("green")t.pensize(random.uniform((branchLen + 5) / 4 - 2, (branchLen + 6) / 4 + 5))t.down()t.forward(branchLen)love(t.xcor(), t.ycor())t.up()t.backward(branchLen)t.color("brown")returnt.pensize(random.uniform((branchLen + 5) / 4 - 2, (branchLen + 6) / 4 + 5))t.down()t.forward(branchLen)# 以下递归ang = random.uniform(15, 45)t.right(ang)# 随机决定减小长度tree(branchLen - random.uniform(12, 16), t)t.left(2 * ang)# 随机决定减小长度tree(branchLen - random.uniform(12, 16), t)t.right(ang)t.up()t.backward(branchLen)myWin = turtle.Screen()t = turtle.Turtle()t.hideturtle()t.speed(1000)t.left(90)t.up()t.backward(200)t.down()t.color("brown")t.pensize(32)t.forward(60)tree(100, t)myWin.exitonclick()

源码领取看相关文件哟

如果觉得《【Python项目】520必备表白神器合集 程序员的浪漫 | 附带源码》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。