我试图在窗口启动后在 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)
因为这样 root.mainloop()
才会之后到达我改变颜色。没有任何变化的视觉反馈
最佳答案
您不能在 tkinter 代码中的任何位置使用 time.sleep()
因为它会阻止 tkinter 主循环运行。解决方案是使用 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()
关于python - 启动 tkinter 后更改对象的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43400856/