三款融合Tkinter与Turtle的创意表白程序

发布时间:2026/7/15 1:20:42
三款融合Tkinter与Turtle的创意表白程序 1. Tkinter与Turtle的融合基础Tkinter是Python的标准GUI库而Turtle则是Python的经典绘图模块。将两者结合使用可以创造出既有交互界面又有动态绘图效果的程序。这种组合特别适合制作创意表白应用因为它能同时提供用户输入和视觉呈现的能力。要在Tkinter窗口中嵌入Turtle画布我们需要使用TurtleScreen和RawTurtle这两个类。下面是一个最简单的示例代码import tkinter as tk from turtle import TurtleScreen, RawTurtle root tk.Tk() root.title(表白程序) # 创建Turtle画布 canvas tk.Canvas(root, width500, height500) canvas.pack() # 将画布转换为TurtleScreen screen TurtleScreen(canvas) turtle RawTurtle(screen) # 绘制一个简单的爱心 turtle.color(red) turtle.begin_fill() turtle.left(50) turtle.forward(100) turtle.circle(40, 180) turtle.right(90) turtle.circle(40, 180) turtle.forward(100) turtle.end_fill() root.mainloop()这段代码创建了一个基本的Tkinter窗口并在其中嵌入了Turtle绘图区域。我们首先创建了一个Canvas组件然后将其转换为TurtleScreen最后在这个屏幕上创建了一个Turtle对象进行绘图。2. 动态爱心轨迹程序动态爱心轨迹是一个既美观又有互动性的表白方式。我们可以让爱心按照特定轨迹移动同时添加一些交互元素。2.1 基础爱心动画首先我们来实现一个基本的爱心动画效果import tkinter as tk from turtle import TurtleScreen, RawTurtle import math def create_heart_animation(): root tk.Tk() root.title(动态爱心) canvas tk.Canvas(root, width600, height600, bgblack) canvas.pack() screen TurtleScreen(canvas) turtle RawTurtle(screen) turtle.hideturtle() turtle.speed(0) turtle.color(pink) def draw_heart(t, size): t.begin_fill() t.left(50) t.forward(size) t.circle(size/2.5, 180) t.right(90) t.circle(size/2.5, 180) t.forward(size) t.end_fill() t.left(40) for i in range(36): turtle.penup() turtle.goto(0,0) turtle.setheading(0) turtle.pendown() draw_heart(turtle, 100 i*2) turtle.right(10) root.mainloop() create_heart_animation()这个程序会在黑色背景上绘制一个旋转放大的爱心图案形成一种动态效果。我们通过循环不断改变爱心的大小和角度创造出动画感。2.2 添加交互元素为了让表白更有互动性我们可以添加一些按钮和输入框def interactive_heart(): root tk.Tk() root.title(互动爱心) # 控制面板 control_frame tk.Frame(root) control_frame.pack(sidetk.TOP, filltk.X) tk.Label(control_frame, text输入表白语:).pack(sidetk.LEFT) message_entry tk.Entry(control_frame, width30) message_entry.pack(sidetk.LEFT) def show_message(): message message_entry.get() turtle.clear() turtle.penup() turtle.goto(0, -150) turtle.color(white) turtle.write(message, aligncenter, font(Arial, 16, bold)) tk.Button(control_frame, text显示, commandshow_message).pack(sidetk.LEFT) # 绘图区域 canvas tk.Canvas(root, width600, height500, bgblack) canvas.pack() screen TurtleScreen(canvas) turtle RawTurtle(screen) turtle.hideturtle() turtle.speed(0) def draw_heart(): turtle.clear() turtle.color(red) turtle.begin_fill() turtle.left(50) turtle.forward(100) turtle.circle(40, 180) turtle.right(90) turtle.circle(40, 180) turtle.forward(100) turtle.end_fill() turtle.left(40) draw_heart() root.mainloop() interactive_heart()这个版本添加了一个输入框和按钮用户可以在输入框中输入表白语点击按钮后表白语会显示在爱心下方。这种交互方式让表白更加个性化。3. 可交互绘图表白板一个更高级的应用是创建一个可以自由绘制的表白板让用户能够亲手绘制表白内容。3.1 基础绘图功能def drawing_board(): root tk.Tk() root.title(绘图表白板) canvas tk.Canvas(root, width800, height600, bgwhite) canvas.pack() screen TurtleScreen(canvas) turtle RawTurtle(screen) turtle.speed(0) # 控制面板 control_frame tk.Frame(root) control_frame.pack(sidetk.TOP, filltk.X) colors [red, blue, green, black, pink] for color in colors: btn tk.Button(control_frame, bgcolor, width3, commandlambda ccolor: turtle.color(c)) btn.pack(sidetk.LEFT) tk.Button(control_frame, text清除, commandturtle.clear).pack(sidetk.LEFT) # 绑定鼠标事件 def drag_handler(x, y): turtle.ondrag(None) # 防止递归 turtle.goto(x, y) turtle.ondrag(drag_handler) turtle.ondrag(drag_handler) root.mainloop() drawing_board()这个程序创建了一个简单的绘图板用户可以选择不同颜色的画笔在画布上自由绘制。清除按钮可以一键清空画布。3.2 添加表白模板为了让表白更有针对性我们可以添加一些预设的表白模板def template_drawing_board(): root tk.Tk() root.title(模板绘图表白板) canvas tk.Canvas(root, width800, height600, bgwhite) canvas.pack() screen TurtleScreen(canvas) turtle RawTurtle(screen) turtle.speed(0) # 控制面板 control_frame tk.Frame(root) control_frame.pack(sidetk.TOP, filltk.X) # 颜色选择 colors [red, blue, green, black, pink] for color in colors: btn tk.Button(control_frame, bgcolor, width3, commandlambda ccolor: turtle.color(c)) btn.pack(sidetk.LEFT) tk.Button(control_frame, text清除, commandturtle.clear).pack(sidetk.LEFT) # 模板选择 template_frame tk.Frame(root) template_frame.pack(sidetk.TOP, filltk.X) def draw_heart(): turtle.clear() turtle.color(red) turtle.begin_fill() turtle.left(50) turtle.forward(100) turtle.circle(40, 180) turtle.right(90) turtle.circle(40, 180) turtle.forward(100) turtle.end_fill() def draw_flower(): turtle.clear() turtle.color(pink) for _ in range(36): turtle.forward(100) turtle.right(45) turtle.forward(30) turtle.right(90) turtle.forward(30) turtle.right(45) turtle.forward(100) turtle.right(110) tk.Button(template_frame, text爱心, commanddraw_heart).pack(sidetk.LEFT) tk.Button(template_frame, text花朵, commanddraw_flower).pack(sidetk.LEFT) # 绑定鼠标事件 def drag_handler(x, y): turtle.ondrag(None) turtle.goto(x, y) turtle.ondrag(drag_handler) turtle.ondrag(drag_handler) root.mainloop() template_drawing_board()这个版本增加了爱心和花朵两个模板按钮点击后会自动绘制相应的图案用户可以在这些基础上进行二次创作。4. 高级表白程序记忆游戏式表白最后我们来创建一个更有创意的记忆游戏式表白程序。用户需要通过完成一个小游戏来解锁表白信息。def memory_game(): root tk.Tk() root.title(记忆游戏表白) canvas tk.Canvas(root, width600, height600, bgblack) canvas.pack() screen TurtleScreen(canvas) turtle RawTurtle(screen) turtle.hideturtle() turtle.speed(0) # 游戏状态 sequence [] user_sequence [] level 1 # 颜色定义 colors [red, blue, green, yellow] color_positions [(-100, 100), (100, 100), (-100, -100), (100, -100)] # 绘制游戏板 def draw_board(): turtle.clear() turtle.penup() for i, (x, y) in enumerate(color_positions): turtle.goto(x, y) turtle.color(gray, colors[i]) turtle.begin_fill() turtle.circle(50) turtle.end_fill() # 闪烁颜色 def flash_color(index): x, y color_positions[index] turtle.penup() turtle.goto(x, y) turtle.color(white, colors[index]) turtle.begin_fill() turtle.circle(50) turtle.end_fill() turtle.update() root.after(500, draw_board) # 游戏逻辑 def next_level(): nonlocal sequence, user_sequence, level sequence.append(tk.randint(0, 3)) user_sequence [] turtle.penup() turtle.goto(0, 0) turtle.color(white) turtle.write(f等级 {level}, aligncenter, font(Arial, 24, bold)) turtle.update() root.after(1000, play_sequence) def play_sequence(index0): if index len(sequence): flash_color(sequence[index]) root.after(1000, lambda: play_sequence(index 1)) else: turtle.clear() draw_board() def color_clicked(index): user_sequence.append(index) flash_color(index) if user_sequence[-1] ! sequence[len(user_sequence)-1]: game_over() elif len(user_sequence) len(sequence): level_complete() def level_complete(): nonlocal level level 1 if level 5: # 总共5关 turtle.penup() turtle.goto(0, 0) turtle.color(white) turtle.write(成功!, aligncenter, font(Arial, 24, bold)) turtle.update() root.after(1000, next_level) else: game_win() def game_over(): turtle.clear() turtle.penup() turtle.goto(0, 0) turtle.color(white) turtle.write(游戏结束, aligncenter, font(Arial, 24, bold)) turtle.update() def game_win(): turtle.clear() turtle.penup() turtle.goto(0, 0) turtle.color(pink) turtle.write(我喜欢你!, aligncenter, font(Arial, 36, bold)) # 绘制爱心 turtle.goto(0, -100) turtle.color(red) turtle.begin_fill() turtle.left(50) turtle.forward(100) turtle.circle(40, 180) turtle.right(90) turtle.circle(40, 180) turtle.forward(100) turtle.end_fill() turtle.update() # 设置点击区域 for i, (x, y) in enumerate(color_positions): canvas.create_rectangle(x-60, y-60, x60, y60, outline, fill, tagsfcolor_{i}) canvas.tag_bind(fcolor_{i}, Button-1, lambda e, idxi: color_clicked(idx)) # 开始游戏 next_level() root.mainloop() memory_game()这个程序创建了一个记忆游戏用户需要记住并重复颜色序列。通过所有关卡后会显示我喜欢你!的表白信息和爱心图案。这种互动方式让表白过程更有趣味性和仪式感。

相关新闻

菏泽建设局网站怎么查资质?老施工员掏心窝子说几句

菏泽建设局网站怎么查资质?老施工员掏心窝子说几句

那天晚上十一点,我还在工地上盯着浇筑。 手机震了一下,是项目经理发的微信。 说是要查个分包单位的资质,急用。 我心想,这不小事吗? 随手点开那个熟悉的入口。 结果页面卡了半天,转圈圈。 心里那个火啊,蹭蹭往上冒。 咱们搞工程的,最怕就是这种时候掉链子。很多人觉得,…

发布时间:2026/7/15 1:20:23
搞工程必看!四川省城乡和住房建设厅网站查资质、看公示全攻略,别等被坑才后悔

搞工程必看!四川省城乡和住房建设厅网站查资质、看公示全攻略,别等被坑才后悔

做工程的兄弟,是不是经常遇到这种糟心事?明明觉得对方靠谱,结果签合同才发现人家资质早就过期了。或者想查个项目公示,在百度上一搜,全是广告链接。点进去不是钓鱼网站,就是过期的旧闻。这时候你才想起来,得去那个最权威的官网。就是那个“四川省城乡和住房建设厅网站”…

发布时间:2026/7/15 1:20:21
重庆永川网站建设价格到底多少?老手掏心窝子告诉你别被坑

重庆永川网站建设价格到底多少?老手掏心窝子告诉你别被坑

做网站最怕啥?不是技术难,是怕钱花了,网站却像个半成品。很多永川老板找我,第一句话就是:“兄弟,做个网站多少钱?”这问题真没法直接回,因为水太深了。有的报价999,有的报价9万9,差十倍不止。今天不整那些虚头巴脑的,咱们就聊聊重庆永川网站建设价格背后的门道。先说…

发布时间:2026/7/15 1:20:10
1500张实拍车辆图+双格式标注(VOC/XML + YOLO/txt),含汽车/摩托/卡车三类,开箱直训YOLOv3

1500张实拍车辆图+双格式标注(VOC/XML + YOLO/txt),含汽车/摩托/卡车三类,开箱直训YOLOv3

本文还有配套的精品资源,点击获取 简介:1500多张真实道路与停车场场景下的车辆照片,全部人工精标,明确区分汽车、摩托车、卡车三类目标。每张图配两个版本标注文件:VOC标准XML格式(带完整结构信息&#…

发布时间:2026/7/15 1:49:56
怎么把网站改为正在建设中:别再用空白页糊弄客户了,这才是正经做法

怎么把网站改为正在建设中:别再用空白页糊弄客户了,这才是正经做法

你是不是也遇到过这种尴尬:网站刚上线没两天,因为要加新功能或者修BUG,不得不暂时下线。结果为了省事,直接把首页删了,或者留个404页面,甚至干脆让服务器报错。客户点进来,看到的是一片空白或者乱码,心里第一反应绝对是:“这公司是不是跑路了?”或者“技术这么烂,不…

发布时间:2026/7/15 1:49:43
别被忽悠了!网站建设百度认证到底值不值?血泪避坑指南

别被忽悠了!网站建设百度认证到底值不值?血泪避坑指南

我恨那些把简单事情复杂化的人。 真的。 每次看到有人拿着几千块的报价单,还在那吹嘘什么“百度官方合作”、“极速收录”,我就想笑。 想骂人。 今天不整虚的。 就聊聊网站建设百度认证这档子事。 很多老板问我:到底要不要做? 我的回答很直接:看情况。 但大部分时候,你不…

发布时间:2026/7/15 1:48:40
别瞎忙活了,网站建设前端学什么语言才是搞钱正道?

别瞎忙活了,网站建设前端学什么语言才是搞钱正道?

本文关键词:网站建设前端学什么语言刚入行那会儿,我也傻过,以为前端就是切图仔,拿PS图往网页上一贴完事。结果呢?被产品经理按在地上摩擦,被后端怼代码不规范,最后发现连个简单的弹窗都搞不定,尴尬得想找个地缝钻进去。现在回头看看,很多新人还在纠结网站建设前端学什…

发布时间:2026/7/15 1:48:35
别拿模板糊弄我!一份合格的网站建设意见建议表,能救你的命

别拿模板糊弄我!一份合格的网站建设意见建议表,能救你的命

如果你正被烂网站折磨得想砸电脑,或者找外包公司沟通像对牛弹琴,这篇内容就是为你准备的。它能帮你理清需求,避开90%的建站坑,让每一分预算都花在刀刃上。别再让那些只会复制粘贴的文案浪费你的时间了,我们需要的是能真正解决问题的方案。我见过太多老板,拿着手机里随便找…

发布时间:2026/7/15 1:47:03
白沟网站建设别踩坑,老板们听句劝,这钱不能白花

白沟网站建设别踩坑,老板们听句劝,这钱不能白花

咱白沟做生意的老板们,最近是不是又有人上门推销网站了?说实话,我听着都头疼。以前我也觉得,搞个网站跟买个菜似的,随便找个便宜的弄弄就行。直到去年,我亲眼看着隔壁做箱包批发的老张,因为一个烂网站,差点把老客户都吓跑了。那网站打开慢得像蜗牛,手机上看字小得跟蚂…

发布时间:2026/7/15 1:46:08
nRF Sniffer 在Wireshark中的高效过滤与实战技巧

nRF Sniffer 在Wireshark中的高效过滤与实战技巧

1. 初识nRF Sniffer与Wireshark黄金组合当你第一次把nRF52840 Dongle插入电脑时,可能没想到这个小玩意儿会成为BLE调试的"显微镜"。作为专为蓝牙低功耗设计的嗅探工具,nRF Sniffer配合Wireshark就像给开发者装上了X光眼镜,能清晰看…

发布时间:2026/7/15 0:00:38
别被忽悠了,普通人怎么选择五屏网站建设才不踩坑

别被忽悠了,普通人怎么选择五屏网站建设才不踩坑

前年我接手公司官网改版,当时脑子一热,觉得搞个“五屏自适应”听起来特别高大上。结果呢?上线第一周,客服电话被打爆,全是客户说手机上看图糊成马赛克,按钮还点不动。那几天我头发都愁白了,找技术对线,找设计扯皮,最后发现全是沟通不到位留下的坑。今天就把我踩过的雷…

发布时间:2026/7/15 0:00:52
泰州网站建设案例揭秘:从0到1的避坑指南与实战心得

泰州网站建设案例揭秘:从0到1的避坑指南与实战心得

泰州网站建设案例 你是否还在为网站打开速度慢而焦虑?是否因为转化率低下而怀疑自己的产品?这篇内容直接给你答案。我不讲虚的理论,只讲怎么把网站做成赚钱机器。做网站最怕什么?怕像绣花枕头,中看不中用。我见过太多泰州的企业老板,花了几万块做个高大上的首页。结果用户…

发布时间:2026/7/15 0:00:52
别装了,你的学院网站建设推进会就是场大型尴尬现场

别装了,你的学院网站建设推进会就是场大型尴尬现场

看着后台那点可怜的访问量,你急不急?方案改了八版,还是没人看。今天这文,只说怎么把会开成,把事做成。上周去隔壁职院蹭会,那场面,真叫一个窒息。会议室里坐满了人,领导在台上讲PPT,底下的人不是在玩手机,就是在发呆。投影仪闪了两下,灭了。没人去修,接着讲。这种会…

发布时间:2026/7/14 8:24:42
七彩建设集团官方网站怎么找?避坑指南与真实体验分享

七彩建设集团官方网站怎么找?避坑指南与真实体验分享

找官网找得头大?这篇直接告诉你怎么辨别真伪,别被假网站坑了钱。昨天半夜两点,我还在电脑前盯着屏幕,心里那个急啊。家里装修刚进场,工长突然说需要确认一份材料清单,说是七彩建设那边要求的。我手忙脚乱地打开浏览器,搜了一堆“七彩建设”,结果出来一堆广告,什么“七…

发布时间:2026/7/14 2:42:40
找可信赖的龙岗网站建设公司?别踩坑,看这几点就够

找可信赖的龙岗网站建设公司?别踩坑,看这几点就够

做企业,网站就是脸面。 在龙岗,想找个靠谱的网站公司,真不容易。 市面上广告满天飞。 承诺得天花乱坠。 最后交付的东西,却让人想砸电脑。 今天不聊虚的。 只聊怎么避坑。 怎么找到真正可信赖的龙岗网站建设团队。先说个大实话。 别信什么“三天上线”。 那是骗小白的。 正…

发布时间:2026/7/14 19:05:38
建站7年才悟出的网站建设思路,别再花冤枉钱了

建站7年才悟出的网站建设思路,别再花冤枉钱了

做建站这行整整7年了。 见过太多老板花几万块, 最后做出来的网站像个垃圾场。 今天不整那些虚头巴脑的术语。 就聊聊我踩过的坑, 和真正能落地的网站建设思路。很多老板一上来就问: “多少钱能做个高大上的?” 我通常直接劝退。 因为方向错了, 你给再多钱也是打水漂。 真正…

发布时间:2026/7/14 13:09:53
合肥的网站建设避坑指南:别被低价忽悠,这3个细节决定生死

合肥的网站建设避坑指南:别被低价忽悠,这3个细节决定生死

做企业官网最怕什么?不是技术难,是交钱后没人管,或者上线一个月连个访客都没有。这篇东西不扯虚的,直接告诉你怎么在合肥找个靠谱的团队,或者自己怎么避坑。先说个大实话,我在合肥混这行五年多,见过太多老板因为贪便宜吃大亏。你去百度搜“合肥的网站建设”,出来一堆报…

发布时间:2026/7/10 18:05:06
别被忽悠了!德州网站建设那些坑,我拿真金白银换来的教训

别被忽悠了!德州网站建设那些坑,我拿真金白银换来的教训

做这行久了,心里就憋着一股火。每次看到客户拿着网上抄来的模板,问我能不能做成“苹果官网”那种效果。我就想笑。真的,太想笑了。今天咱不整那些虚头巴脑的专业术语。就聊聊德州网站建设里,那些让人头秃的真实事儿。我有个客户,老张。他是做德州本地建材的,实在人。当初…

发布时间:2026/7/13 2:08:03