2017-04-13 21 views
1

我試圖在窗口啓動後在tkinter中更改顏色的圓圈。我看了at this的問題,並且我知道如何在陳述變量之後改變顏色。我試圖製作一個交通信號燈(就像我看到的問題中的人一樣),但在屏幕出現後我無法更新顏色更改。這是我迄今爲止在tkinter啓動後更改對象的顏色

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()只達到後,我改變顏色。它沒有視覺反饋改變

+0

用戶的方法'root.after(1000,FOO)',而不是'time.sleep'?或者有一個按鈕執行該功能..? (請注意,時間以毫秒爲單位) – arrethra

回答

3

你不能在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() 
+0

這看起來像我正在尋找的確切的東西。我現在無法測試它,但我相信它會起作用!謝謝! – Goalieman