如何解决如何在Tkinter中快速制作许多形状
我正在尝试在tkinter中使用Canvas制作形状,并且进展顺利。但是,我正在尝试使用随机数制作动画,该随机数具有在屏幕上移动的不同大小的框。我想知道最Python化的方式是创建大约20或30个形状,然后能够移动它们并更改颜色而无需为每个形状创建一行代码,然后再引用它。然后,我可以使用randint
函数使用它来使形状具有不同的大小。
非常感谢
解决方法
您可以循环创建多个项目。将项目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,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","yellow"))
self.item_id = canvas.create_rectangle(x,fill=color)
self.fall()
def fall(self):
self.canvas.move(self.item_id,self.velocity)
self.canvas.after(100,self.fall)
root = tk.Tk()
canvas = tk.Canvas(root,width=500,height=500)
canvas.pack(fill="both",expand=True)
for i in range(100):
item = RandomItem(canvas)
root.mainloop()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。