如何在 tkinter 中快速制作多种形状

我正在尝试使用 tkinter 中的 Canvas 制作形状,并且进展顺利。不过,我正在尝试使用随机数制作动画,其中不同大小的盒子在屏幕上移动。我想知道创建大约 20 或 30 个形状,然后能够移动它们并改变颜色,而不需要为每个形状创建一行代码,然后稍后引用它,最 Pythonic 的方法是什么。然后我可以使用该函数使形状具有不同的大小randint



慕盖茨4494581
浏览 90回答 1
1回答

桃花长相依

您可以循环创建多个项目。将项目 ID 保存在列表中,然后您可以迭代这些项目来移动它们。下面的示例在随机位置创建 100 个具有随机颜色的项目,然后为它们在每次迭代中以随机数量下落设置动画。import tkinter as tkimport randomroot = 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 tkimport randomclass 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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python