【Python趣味编程】用 Tkinter 打造“爱心便签墙”:一份来自代码的温柔
【Python趣味编程】用 Tkinter 打造“爱心便签墙”:一份来自代码的温柔
文章目录
- 【Python趣味编程】用 Tkinter 打造“爱心便签墙”:一份来自代码的温柔
- 🎯 前言
- 🧠 核心思路
- 关键点:
- 💻 完整代码
- 🔧 代码解析 (小白必看)
- 🎨 你能怎么玩?
- 🚨 注意事项
- ✨ 结语
🎯 前言
你有没有想过,除了写枯燥的算法和爬虫,Python 还能用来做什么?今天,我们来玩点不一样的 ——用 Python 的 GUI 库 Tkinter,在屏幕上“贴”出一个满满爱意的便签心形。
先上一张最终效果图(此处贴你最后一张截图),是不是看起来既浪漫又有极客感?
🧠 核心思路
我们利用笛卡尔心形线公式计算出心形轨迹上的每一个坐标点,然后在每个坐标点弹出一个独立的窗口(便签),每个窗口都随机赋予暖心的文字和柔和的色彩,最终堆叠出完美的爱心形状。
关键点:
- 数学公式:心形线参数方程。
- GUI 编程:用 Python 内置的
tkinter创建大量无边框窗口。 - 堆叠逻辑:通过循环和坐标偏移控制窗口的间距与层数。
💻 完整代码
以下是经过多轮调优后的终极版本。它轻盈、不卡顿,且能画出完美的单圈爱心。
importtkinterastkimportmathimportrandomimporttime# 便签文字库TEXTS=["保持好心情","别熬夜","多喝水","照顾好自己","开心","加油","微笑面对","你超棒的","顺顺利利","好好吃饭","开心每一天"]# 笛卡尔心形线公式defheart_x(t,scale=15):return16*math.sin(t)**3*scaledefheart_y(t,scale=15):return-(13*math.cos(t)-5*math.cos(2*t)-2*math.cos(3*t)-math.cos(4*t))*scaledefmain():# 获取屏幕尺寸root_check=tk.Tk()screen_width=root_check.winfo_screenwidth()screen_height=root_check.winfo_screenheight()root_check.destroy()center_x=screen_width//2center_y=screen_height//2# 便签窗口大小win_w,win_h=100,80# 创建隐形主窗口master=tk.Tk()master.geometry("1x1+-10000+-10000")master.title("爱心便签生成器")# === 核心循环:画一圈爱心 ===total_steps=300# 便签总数max_angle=2*math.pi# 画完整一圈foriinrange(total_steps):# 计算当前角度t=(i/total_steps)*max_angle# 计算坐标x_raw=heart_x(t,scale=18)y_raw=heart_y(t,scale=18)# 加入随机偏移,增加自然感offset_x=random.randint(-8,8)offset_y=random.randint(-8,8)# 最终屏幕坐标pos_x=center_x+int(x_raw)+offset_x pos_y=center_y+int(y_raw)+offset_y# 创建新窗口win=tk.Toplevel(master)win.geometry(f"{win_w}x{win_h}+{pos_x}+{pos_y}")# 保持窗口在最顶层win.attributes("-topmost",True)# 随机颜色和文字bg_color=random.choice(["#FFFACD","#FFB6C1","#98FB98","#87CEFA","#DDA0DD","#FFD700","#E0FFFF","#FFE4E1"])text_content=random.choice(TEXTS)# 创建标签(显示文字)label=tk.Label(win,text=text_content,font=("Microsoft YaHei",11,"bold"),bg=bg_color,wraplength=win_w-15)label.pack(expand=True,fill="both")# 应用背景色win.configure(bg=bg_color)# 刷新界面,防止卡死master.update()time.sleep(0.02)# 控制生成速度master.mainloop()if__name__=="__main__":main()🔧 代码解析 (小白必看)
- 心形公式 (
heart_x,heart_y):这是数学的浪漫。t是角度,从 0 到 2π(一圈),计算出的(x, y)刚好构成一个心形。 tk.Toplevel():这是 Tkinter 中创建“子窗口”的方法。我们用它在主窗口之外弹出成百上千个小便签。win.attributes("-topmost", True):这句代码让每个小窗口都“置顶显示”,这样它们就会覆盖在背景之上,形成堆叠效果。time.sleep(0.02):非常重要!如果没有它,几百个窗口会同时弹出,瞬间卡死电脑。
🎨 你能怎么玩?
这个程序是 100% 可定制的!你可以尝试修改以下参数,创造出不同的效果:
- 修改
TEXTS列表:换上你喜欢的歌词、励志语录,或者你想对某个人说的话。 - 调整
win_w和win_h:把便签改大或改小,改变心形的整体比例。 - 修改
scale参数:在heart_x和heart_y的调用里改scale值,可以放大或缩小整个爱心。 - 改变总步数
total_steps:数值越大,爱心越密(但也会越卡)。
🚨 注意事项
- 运行环境:无需安装任何第三方库,只要是安装了 Python 的 Windows 或 Mac 系统即可运行(Mac 上窗口边框可能稍有不同)。
- 关闭方式:由于窗口很多,如果想关闭,直接关闭任务栏上的 Python 窗口或者直接结束进程即可。
- 性能提示:如果电脑较慢,建议减少
total_steps的值,比如改为 200。
✨ 结语
用代码表达心意,是一件很酷的事情。你可以把这个程序发给喜欢的人,让他们运行一下,就能看到满满一屏的“保持好心情”。
如果觉得有趣,别忘了点赞收藏!也欢迎在评论区分享你运行的截图和改写的文字哦!
#Python #趣味编程 #爱心代码 #Tkinter #浪漫代码
