1 回答

TA貢獻1860條經驗 獲得超8個贊
您可以循環創建多個項目。將項目 ID 保存在列表中,然后您可以迭代這些項目來移動它們。
下面的示例在隨機位置創建 100 個具有隨機顏色的項目,然后為它們在每次迭代中以隨機數量下落設置動畫。
import tkinter as tk
import random
root = tk.Tk()
canvas = tk.Canvas(root, bg="black", width=400, height=400)
canvas.pack(fill="both", expand=True)
items = []
for i in range(100):
x = random.randint(10, 490)
y = random.randint(10, 490)
size = random.randint(20,50)
color = random.choice(("red", "orange", "green", "blue", "white", "yellow"))
item_id = canvas.create_rectangle(x, y, x+size, y+size, fill=color, outline="white")
items.append(item_id)
def animate():
for item_id in items:
distance = random.randint(0, 5)
canvas.move(item_id, 0, distance)
canvas.after(100, animate)
animate()
root.mainloop()
這是一種面向對象的方法,我們使用類來定義項目,并且類實例可以為自身設置動畫。
import tkinter as tk
import random
class RandomItem:
def __init__(self, canvas):
self.canvas = canvas
self.velocity = random.randint(1,5)
x = random.randint(10, 490)
y = random.randint(10, 490)
size = random.randint(20,50)
color = random.choice(("red", "orange", "green", "blue", "white", "yellow"))
self.item_id = canvas.create_rectangle(x, y, x+size, y+size, fill=color)
self.fall()
def fall(self):
self.canvas.move(self.item_id, 0, self.velocity)
self.canvas.after(100, self.fall)
root = tk.Tk()
canvas = tk.Canvas(root, bg="black", width=500, height=500)
canvas.pack(fill="both", expand=True)
for i in range(100):
item = RandomItem(canvas)
root.mainloop()
添加回答
舉報