专栏导读
🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手
🏳️🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注
👍 该系列文章专栏:请点击——>Python办公自动化专栏求订阅
🕷 此外还有爬虫专栏:请点击——>Python爬虫基础专栏求订阅
📕 此外还有python基础专栏:请点击——>Python基础学习专栏求订阅
文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
❤️ 欢迎各位佬关注! ❤️
文章名称 | 链接 |
---|---|
【趣味Python】第10课:漫天繁星疯狂闪闪闪(点击版) | 点我进行跳转 |
【趣味Python】第9课:Tkinter恶搞无限弹窗 | 点我进行跳转 |
【趣味Python】第8课:小汽车游戏 | 点我进行跳转 |
【趣味Python】第7课:炫酷计算器资源占用率可视化 | 点我进行跳转 |
【趣味Python】第6课:小风车吱悠悠地转 | 点我进行跳转 |
【趣味Python】第5课:雪花飘飘效果 | 点我进行跳转 |
【趣味Python】第4课:炫酷烟花秀 | 点我进行跳转 |
【趣味Python】第3课:夜空划过流星雨 | 点我进行跳转 |
【趣味Python】第2课:漫天繁星疯狂闪闪闪 | 点我进行跳转 |
【趣味Python】第1课:使用tkinter实现疯狂弹幕效果 | 点我进行跳转 |
背景介绍
有没有想过,用代码也可以绘出一片“会跳舞的星星”?
今天我们来带大家体验一把,如何用 Python + Tkinter 编写一个 点击生成闪烁五角星 的小动画。只需轻点鼠标,一颗颗彩色五角星便会在画布上“疯狂闪闪闪”——活灵活现,炫彩夺目!
🌟 项目亮点
-
鼠标每点击一次,生成一颗“跳动”的五角星
-
每颗星星都有自己独立的闪烁动画
-
色彩随机、位置自由、造型有趣
-
不依赖外部库,纯 Tkinter 编写,零门槛
🎬 效果展示
点击窗口任意位置,星星就会出现在你点击的地方,并持续“蹦蹦跳跳”,每颗星都像有生命一样跳舞,色彩斑斓,童趣十足。
库的安装
库 | 用途 | 安装 |
---|---|---|
tkinter | 界面设计 | pip install tkinter -i https://pypi.tuna.tsinghua.edu.cn/simple/ |
💻 代码实现(点击版)
以下是核心代码,仅使用 Python 自带的 tkinter 模块:
完整代码
import tkinter as tk
import random
from math import sin, cos, pi
from tkinter.constants import *
width = 888
height = 500
colors = ["red", "orange", "yellow", "green", "blue", "purple", "pink", "cyan", "magenta"]
frames = 20
def star_points(cx, cy, r, rotation=0):
points = []
for i in range(5):
outer_angle = rotation + i * 2 * pi / 5
inner_angle = outer_angle + pi / 5
outer_x = cx + r * cos(outer_angle)
outer_y = cy + r * sin(outer_angle)
inner_x = cx + r * 0.5 * cos(inner_angle)
inner_y = cy + r * 0.5 * sin(inner_angle)
points.extend([outer_x, outer_y, inner_x, inner_y])
return points
def curve(p):
return 2 * (2 * sin(4 * p)) / (2 * pi)
class ClickStar:
def __init__(self, canvas, x, y):
self.canvas = canvas
self.x = x
self.y = y
self.radius = random.randint(10, 20)
self.color = random.choice(colors)
self.rotation = random.uniform(0, 2 * pi)
self.frame = 0
self.animate()
def animate(self):
self.canvas.delete(f"star_{id(self)}")
ratio = 1 + 0.3 * curve(self.frame / 10 * pi)
r = self.radius * ratio
points = star_points(self.x, self.y, r, self.rotation)
self.canvas.create_polygon(points, fill=self.color, outline="black", tags=f"star_{id(self)}")
self.frame = (self.frame + 1) % frames
self.canvas.after(80, self.animate)
class StarApp:
def __init__(self, root):
self.root = root
self.root.title("点击生成闪动的五角星")
self.canvas = tk.Canvas(root, width=width, height=height, bg="black")
self.canvas.pack()
self.canvas.bind("<Button-1>", self.create_star)
def create_star(self, event):
ClickStar(self.canvas, event.x, event.y)
if __name__ == '__main__':
root = tk.Tk()
app = StarApp(root)
root.mainloop()
🧠 知识点回顾
这节课你将学会:
-
如何用 Canvas 绘制复杂多边形(如五角星)
-
如何绑定鼠标点击事件
-
如何实现独立对象的定时动画
-
使用三角函数模拟“跳动/缩放”的视觉效果
🧩 进阶思考
你可以试着拓展这个项目:
-
给星星添加不同的旋转方向
-
点击时播放“叮”的一声音效
-
添加“清除所有星星”按钮
-
限制最大星星数以防内存占用过高
🎉 小结
这一课,我们用简单的 Python 图形界面编程,让每一次点击都带来无限惊喜。编程从来不仅仅是逻辑,更可以是创意的表达,是童年的回忆,是夜空中最亮的星。
还等什么?打开你的编辑器,开始创造你自己的星星世界吧!
总结
-
希望对初学者有帮助
-
致力于办公自动化的小小程序员一枚
-
希望能得到大家的【一个免费关注】!感谢
-
求个 🤞 关注 🤞
-
此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏
-
求个 ❤️ 喜欢 ❤️
-
此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏
-
求个 👍 收藏 👍
-
此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏