當前位置: 妍妍網 > 碼農

Python春節煙花效果

2024-01-26碼農

大家好!今天給你們帶來了用tkinter寫的python煙花效果,點選滑鼠即可觸發。

完整例項:

import tkinter as tkimport random# 定義隨機顏色函式defrandom_color(): r = random.randint(0, 255) g = random.randint(0, 255) b = random.randint(0, 255)return f'#{r:02x}{g:02x}{b:02x}'# 定義煙花類 classFirework:def__init__(self, canvas, x, y):self.canvas = canvasself.x = xself.y = yself.color = random_color()self.radius = 2self.particles = []self.create_particles()self.lifespan = 100# 設定煙花消失的時間# 建立粒子效果defcreate_particles(self):for i in range(120): vx = random.uniform(-1, 1) * 8 vy = random.uniform(-1, 1) * 8 particle = self.canvas.create_oval(self.x, self.y, self.x+self.radius, self.y+self.radius, fill=self.color)self.particles.append((particle, vx, vy))# 更新煙花效果defupdate(self):self.radius += 0.5self.lifespan -= 1for particle inself.particles:self.canvas.move(particle[0], particle[1], particle[2]) particle_position = self.canvas.coords(particle[0])# 刪除飛出螢幕的粒子if particle_position[0] < 0or particle_position[1] < 0or particle_position[2] > 800or particle_position[3] > 600:self.canvas.delete(particle[0])self.particles.remove(particle)# 刪除所有粒子後刪除煙花ifnotself.particles orself.lifespan <= 0:self.canvas.delete(self.firework_id)# 啟動煙花效果deffire(self):self.firework_id = self.canvas.create_oval(self.x, self.y, self.x+self.radius, self.y+self.radius, fill=self.color)self.canvas.after(10, self.launch)# 發射煙花deflaunch(self):self.update()ifself.particles:self.canvas.after(10, self.launch)# 建立Tkinter視窗root = tk.Tk()root.geometry('800x600')# 建立畫布canvas = tk.Canvas(root, bg='black')canvas.pack(fill=tk.BOTH, expand=1)# 點選事件處理常式defon_click(event): x = event.x y = event.y firework = Firework(canvas, x, y) firework.fire()# 繫結點選事件canvas.bind('<Button-1>', on_click)# 啟動Tkinter事件迴圈root.mainloop()