Python 使用 Turtle 与 PySimpleGUI 制作中秋互动弹窗代码
本文介绍如何使用 Python 的 Turtle 库绘制月亮和小人,并结合 PySimpleGUI 实现交互式弹窗。通过用户选择触发不同动画效果,生成一份有趣的中秋互动礼物。文章还详细说明了如何将 Python 脚本打包为独立的 exe 可执行文件,方便分享给好友。
Python 中秋互动弹窗程序设计
这段代码实现了图形界面弹窗设计,能够根据用户的交互选择展示不同的画面内容,是一款简单且富有趣味性的中秋节日礼物程序。
这是首次尝试使用 Turtle 库进行图形绘制,由于经验有限,代码逻辑可能不够精简,存在冗余部分,如有不足之处欢迎指正。
Python 程序打包为 exe 的步骤
若希望将该程序分享给朋友,可以将 Python 源码打包为 exe 可执行文件,具体操作步骤如下:
- 首先,在电脑桌面上新建一个文件夹。
- 接着,将需要打包的 Python 源文件放入该文件夹中。
- 然后,在该文件夹目录下打开命令行窗口(参考示意图),并输入命令:pyinstaller -F filename.py(其中 filename.py 替换为你的实际文件名)。
- 执行完毕后,在生成的 dist 文件夹中即可找到打包好的小程序文件。

程序运行效果展示
以下是程序运行后的部分效果截图,展示了经过弹窗交互选择后呈现的不同动画结果。


源代码与自定义说明
完整的源代码已提供,有需要的读者可自行获取使用。
##Author:Griffy
##Date:2021-9-21
from turtle import *
import time
import PySimpleGUI as sg #弹框制作模块
def draw_count_down(i): #倒数
bgcolor('black')
speed(0)
up()
goto(-50,-100)
color('white')
write(i, align="center",font=('Times New Roman', 200, 'bold'))
time.sleep(1)
def draw_moon(): #画月亮
bgcolor('#093FB7')
color('#F4EE00', '#F4EE00')
begin_fill()
speed(2)
up()
goto(0, -300)
down()
circle(300)
end_fill()
def draw_people(): #画小人
up()
fillcolor()
begin_fill()
color('black','white')
goto(-300, 50) # 脖子坐标
down()
circle(75) # 半径为75的脑袋
end_fill()
right(90)
forward(175) # 身体的长度175像素
right(45)
forward(100) # 腿长100像素
up()
goto(-300, -120) # 画另一条腿
down()
left(90)
forward(100)
up()
goto(-300, -5) # 手臂坐标
down()
left(45)
forward(100) # 第一只手臂长度
left(45)
forward(67) # 手掌长度
up()
goto(-300, -40) # 第二只手臂坐标
down()
right(45)
forward(100) # 第二只手臂长度
right(45)
forward(67)
up()
goto(-330, 155) # 第一只眼睛起始坐标
down()
right(45)
forward(50) # 眼睛长度为50
up()
goto(-270, 155) # 第二只眼睛起始坐标
down()
forward(50)
up()
pencolor('#F39F79')
goto(-340,100) #红脸蛋第一只眼
seth(0)
down()
backward(40)
up()
goto(-260, 100) # 红脸蛋第二只眼
down()
forward(40)
time.sleep(1)
def draw_heart(size): # 画爱心
color('red', 'pink')
down()
setheading(150)
begin_fill()
forward(size)
circle(size * -3.745, 45)
circle(size * -1.431, 165)
left(120)
circle(size * -1.431, 165)
circle(size * -3.745, 45)
forward(size)
end_fill()
def send_heart(): #发射爱心
up()
goto(-50, -22)
draw_heart(14)
up()
goto(120, -22)
draw_heart(25)
penup()
goto(305, -22)
draw_heart(43)
def wr_character():
up()
goto(-50,-200)
pencolor('black')
write('中', font=('幼圆', 60, 'bold'))
up()
goto(50,-200)
write('秋', font=('幼圆', 60, 'bold'))
up()
goto(150,-200)
write('快', font=('幼圆', 60, 'bold'))
up()
goto(250,-200)
write('乐', font=('幼圆', 60, 'bold'))
def draw_pupu(): #画便便
up()
shapesize(10, 2)
speed(2)
fillcolor()
color('#805140','#805140')
begin_fill()
goto(-50, -20)
down()
circle(20)
end_fill()
begin_fill()
up()
goto(-50, -80)
down()
circle(40)
end_fill()
begin_fill()
up()
goto(10, -110)
seth(90)
down()
circle(60,180)
seth(0)
forward(120)
end_fill()
def present_good(): #认为我是好人送的礼物
setup(1000,700)
pensize(10)
hideturtle()
numbers=[5,4,3,2,1] #进行倒数
for i in numbers:
draw_count_down(i)
undo()
draw_moon()
draw_people()
send_heart()
wr_character()
done()
def present_bad(): #认为我不好送的礼物
setup(1000, 700)
pensize(10)
hideturtle()
numbers=[5,4,3,2,1] #进行倒数
for i in numbers:
draw_count_down(i)
undo()
draw_moon()
draw_people()
draw_pupu()
wr_character()
done()
layout=[ #弹框内容设计
[sg.Text('请输入你的名字:')],[sg.Input()],
[sg.Text('请回答下面这个问题哦!')],
[sg.Text('xxx是个大好人是吗?')],
[sg.Button('是的是的')],[sg.Button('不是')]
]
sg.popup('你好呀!我是你的好朋友xxx为你定制的中秋节礼物⭐','请按OK键继续') #这是一个简易弹框
time.sleep(1)
window=sg.Window('中秋礼物',layout)
event,value=window.read()
window.close()
if event == '是的是的':
sg.popup(f'{value[0]}请按OK键接收xxx的中秋礼物!♥') #这是一个简易弹框 #这里的value[0],是因为value返回内容为字典
time.sleep(1)
present_good()
else:
sg.popup(f'{value[0]}竟然对xxx有意见,你还想要礼物!!','但是xxx是个大度的人,送你礼物吧','请按OK键接收xxx的中秋礼物!')
present_bad()
弹窗中显示的问题文本和提示信息,用户可以根据个人喜好进行自定义修改。
最后,预祝各位中秋节快乐。
关于 Python 结合弹窗设计与 Turtle 绘制爱心的介绍至此结束,更多相关技术内容可查阅本站往期文章或继续浏览后续教程,感谢支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













