我试图在窗口启动后在tkinter中更改颜色。我看了at this问题,我知道在说明变量后如何更改颜色。我正在尝试制作交通信号灯(很像我看到的问题中的人),但是在屏幕出现后我无法更新颜色变化。这就是我到目前为止所拥有的
root = tk.Tk()
canvas = tk.Canvas(root)
light_1 = canvas.create_oval(*coordinates here*, fill='green')
root.mainloop()
并更改颜色使用canvas.itemconfig(light_1, fill='blue')
我不能只做一个time.sleep(1)
,因为{<1}}只有在更改颜色后才会到达。没有视觉反馈改变
答案 0 :(得分:3)
您无法在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()