启动tkinter后更改对象的颜色

时间:2017-04-13 20:05:22

标签: python canvas tkinter colors

我试图在窗口启动后在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}}只有在更改颜色后才会到达。没有视觉反馈改变

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()