如何用python的Tkinter实现多个正方形以不同速度移动
时间: 2024-05-15 14:17:19 浏览: 10
以下是用 Python 的 Tkinter 实现多个正方形以不同速度移动的代码示例:
```python
import tkinter as tk
import random
class Square:
def __init__(self, canvas, color="red"):
self.canvas = canvas
self.id = canvas.create_rectangle(0, 0, 20, 20, fill=color)
self.canvas.move(self.id, 250, 250)
self.x_direction = random.choice([-1, 1])
self.y_direction = random.choice([-1, 1])
self.x_speed = random.randint(1, 5)
self.y_speed = random.randint(1, 5)
self.canvas_height = self.canvas.winfo_height()
self.canvas_width = self.canvas.winfo_width()
def move(self):
self.canvas.move(self.id, self.x_speed * self.x_direction, self.y_speed * self.y_direction)
pos = self.canvas.coords(self.id)
if pos[1] <= 0 or pos[3] >= self.canvas_height:
self.y_direction *= -1
if pos[0] <= 0 or pos[2] >= self.canvas_width:
self.x_direction *= -1
root = tk.Tk()
root.title("Moving Squares")
canvas = tk.Canvas(root, width=500, height=500)
canvas.pack()
num_squares = 5
squares = []
for i in range(num_squares):
squares.append(Square(canvas))
while True:
for square in squares:
square.move()
root.update()
tk.time.sleep(0.02)
root.mainloop()
```
该代码创建了一个名为 `Square` 的类,在 `Tkinter` 的 `Canvas` 上绘制正方形,并随机选择不同的速度和方向,实现了多个正方形的移动效果。使用一个 `while` 循环来不断移动所有正方形,直到程序被退出。注意在形式化测试中,此代码可能会发生一些不可预知的错误。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)