帮我做一个Python窗口画飘雪
时间: 2023-10-09 11:13:11 浏览: 27
以下是一个简单的Python窗口画飘雪的代码:
```python
import random
import tkinter as tk
class Snowflake:
def __init__(self, canvas):
self.canvas = canvas
self.id = None
self.x = 0
self.y = 0
self.vx = 0
self.vy = 0
self.size = 0
def create(self):
self.size = random.randint(10, 30)
self.x = random.randint(0, self.canvas.winfo_width())
self.y = -self.size
self.vx = random.randint(-2, 2)
self.vy = random.randint(1, 3)
self.id = self.canvas.create_oval(self.x, self.y, self.x+self.size, self.y+self.size, fill='white')
def move(self):
self.x += self.vx
self.y += self.vy
if self.x > self.canvas.winfo_width() + self.size or self.x < -self.size or self.y > self.canvas.winfo_height() + self.size:
self.canvas.delete(self.id)
return False
self.canvas.coords(self.id, self.x, self.y, self.x+self.size, self.y+self.size)
return True
class Snow:
def __init__(self, num_flakes):
self.num_flakes = num_flakes
self.flakes = []
self.canvas = tk.Canvas(width=800, height=600)
self.canvas.pack()
def create(self):
for i in range(self.num_flakes):
flake = Snowflake(self.canvas)
flake.create()
self.flakes.append(flake)
def move(self):
for flake in self.flakes:
if not flake.move():
self.flakes.remove(flake)
def run(self):
self.create()
while True:
self.move()
self.canvas.update()
self.canvas.after(50)
snow = Snow(50)
snow.run()
```
这个代码将创建一个大小为800x600的窗口,并在其中绘制50个不同大小的随机飘雪。飘雪会从窗口上方开始,向下移动,并在窗口底部消失。每个飘雪的速度和方向都是随机的。窗口会每50毫秒更新一次,从而制造出飘雪的动态效果。