【问题标题】:Change the color of an object after tkinter has been initiated启动 tkinter 后更改对象的颜色
【发布时间】:2017-04-13 20:05:21
【问题描述】:

我正在尝试在窗口启动后在 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()它没有变化的视觉反馈

【问题讨论】:

  • 使用方法root.after(1000,foo) 而不是time.sleep?或者有一个按钮执行该功能..? (注意时间以毫秒为单位)

标签: python canvas tkinter colors


【解决方案1】:

您不能在 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()

【讨论】:

  • 这似乎正是我正在寻找的东西。我现在无法对其进行测试,但我相信它会起作用!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多