python - 启动 tkinter 后更改对象的颜色

标签 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) 因为这样 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/

相关文章:

python - 对 Pandas 中每个单元格内的字母进行排序

javascript - 在 PaperJS 中缩放后重置形状大小的最有效方法是什么

javascript - 获取图 block 集上图 block 的 X 和 Y

python - 在 Unix 上的 Tkinter 中创建计划任务

python - 在python中将FFT绘制为一组正弦波?

Python - 多处理和共享内存

javascript - Chartjs v2 xAxes 标签与 scaleLabel 重叠

python - 使用 Python 和 Tkinter 创建温度程序

python - 如何使 Python Tkinter 中的按钮保持按下状态直到按下另一个按钮

python - 当表中有行时,选择语句返回空列表