Python 启动tkinter后更改对象的颜色

Python 启动tkinter后更改对象的颜色,python,canvas,tkinter,colors,Python,Canvas,Tkinter,Colors,我试图在tkinter中画一个圆圈,在启动窗口后更改颜色。我看了这个问题,我知道在声明变量后如何更改颜色。我正在试着做一个红绿灯(很像我在问题中看到的那个人),但是我不能在屏幕出现后更新颜色变化。这就是我目前所拥有的 root = tk.Tk() canvas = tk.Canvas(root) light_1 = canvas.create_oval(*coordinates here*, fill='green') root.mainloop() 要更改颜色,请使用canvas.itemc

我试图在tkinter中画一个圆圈,在启动窗口后更改颜色。我看了这个问题,我知道在声明变量后如何更改颜色。我正在试着做一个红绿灯(很像我在问题中看到的那个人),但是我不能在屏幕出现后更新颜色变化。这就是我目前所拥有的

root = tk.Tk()
canvas = tk.Canvas(root)
light_1 = canvas.create_oval(*coordinates here*, fill='green')
root.mainloop()
要更改颜色,请使用canvas.itemconfig(light\u 1,fill='blue')


我不能只执行
time.sleep(1)
,因为只有在我更改颜色后才能到达
root.mainloop()
。在tkinter代码中的任何地方都不能使用
time.sleep()
,因为它会阻止tkinter mainloop的运行。解决方案是使用
after
方法将代码添加到tkinter主循环:

def change_color():
    canvas.itemconfig(light_1, fill='blue')

root = tk.Tk()
canvas = tk.Canvas(root)
light_1 = canvas.create_oval(*coordinates here*, fill='green')
root.after(1000, change_color) # 'after' uses milliseconds, so 1,000 = 1 second
root.mainloop()

使用方法
root.after(1000,foo)
而不是
time.sleep
?或者让按钮执行该功能。。?(请注意,时间是以毫秒为单位的)这似乎正是我要找的东西。我现在无法测试它,但我相信它会工作的!谢谢