2015-07-20 151 views
1

我想更新python 2中Tkinter中的一個圓的顏色。我可以創建我的圓,但顏色不會在我的task()方法中更新,直到我停止運行該程序。 val大於4時,如何才能更新顏色?Python Tkinter畫布更新

from Tkinter import * 
m = Tk() 
w = Canvas(m, width = 100, height = 100) 
w.pack() 
cir = w.create_oval(50, 50, 100, 100) 

def task(): 
    while True: 
     val += 1 
     if val > 4: 
      w.itemconfig(cir, fill = "blue") 

m.after(2000, task) 
m.mainloop() 
+1

你有'while true:'沒有'break'。你期望什麼? – TigerhawkT3

+0

我在第一次寫錯了代碼,但即使使用此修補程序,它仍然不會更新顏色 – Brosten

+0

您仍然有'while True:'沒有'break'。再次,你期望什麼? – TigerhawkT3

回答

0

這將工作。

Like @ TigerhawkT3表示您需要休息才能退出循環。

from Tkinter import * 
m = Tk() 
w = Canvas(m, width = 100, height = 100) 
w.pack() 
cir = w.create_oval(50, 50, 100, 100) 

def task(): 
    val = 1 
    while True: 
     val += 1 
     if val > 4: 
      w.itemconfig(cir, fill = "blue") 

      #without the break task will run forever 
      break 

m.after(2000, task) 
m.mainloop() 
+0

OP在一個現在被刪除的答案中評論說,即使在改變填充顏色後,他也想繼續遞增'val'(雖然沒有解釋爲什麼)。 – TigerhawkT3

0

恐怕你不得不這麼做,唯一的辦法。 代碼:

from tkinter import * 

m = Tk() 

c = Canvas(root, width=100, height=100) 
c.pack() 

v = 4 

if v == 4: 
    v = 0 
    c.pack_forget() 
    del c 

    c = Canvas(root, width=100, height=100, bg='blue') 
    c.pack() 

c.mainloop() 

是否所有的用v變化(我還沒有把在雖然)! 希望這有助於!

+0

等等,我不是說v,我的意思是val,對不起! – Guydangerous99