我正在尝试模拟一个美国交通灯,在一个矩形上画三个圆圈,都画在一张画布上。模拟应该通过按以下顺序每2秒显示一次光来镜像“动画”:绿色>黄色>红色>绿色,以此类推。
我能想到的唯一方法是使用canvas.move(),canvas.after(),canvas.update()模式移动一个填充的椭圆对象,一次叠加一个未填充的圆。我已经掌握了以适当的速度和正确的顺序移动圆圈的逻辑。问题是,我只是实例化了一个用“绿色”填充的圆,但我不能使用这种方法将它更改为“黄色”或“红色”。每隔2秒就必须填充(“canvas.delete”)并使用不同的填充在一个新的位置重新绘制它,这似乎很愚蠢,因为对于这样一个简单的程序来说,这是一个很大的工作量。
问题1:有没有一种方法,我可以使用某种方法或其他方式,随意更改填充画布对象的fill
选项?
问题2:我处理这个场景是不是不正确?有没有更好的方法来模拟这一点?
发布于 2012-10-21 03:10:22
是的,您应该能够使用config()
更改画布的设置。
同样,使用itemconfig()
更改画布上的项目。这确实要求您保存项目的句柄或对其进行标记。
基于tkinterbook的示例:
item = canvas.create_line(xy, fill="red")
canvas.coords(item, new_xy) # change coordinates
canvas.itemconfig(item, fill="blue") # change color
https://stackoverflow.com/questions/12991717
复制相似问题