2017-03-02 43 views
0

我得到了一個學校項目,在Tkinter窗口打開的所有時間裏,我需要有一個循環。循環到Tkinter實例

我試圖使用after_idle()after方法,但沒有一個能夠工作。

我有短的測試代碼同樣的問題:

from Tkinter import * 

i = 0 

root = Tk() 
root.geometry("200x200") 
l = Label(root, width = 200, height = 150) 
l.pack(side = 'top') 
b = Button(root, width = 10, height = 10) 
b.pack() 

def a(): 
    global i  
    i+=1 
    l.configure(text = i) 

root.after(10, a()) 

root.mainloop() 

回答

1

root.after(10, a())是非常接近你想要什麼,但第二個參數a()運行a立即使用它的返回值(這是None)。

你想引用a,不要運行它。使用root.after(10, a)


此外,在評論中指出由Bryan奧克利,你需要一些辦法繼續安排aroot.after只調度功能運行一次。最簡單的方法是將root.after(10, a)添加到該功能本身:

def a(): 
    global i 
    root.after(10, a) # re-schedule to run again 
    i += 1 
    l.configure(text=i) 
+1

這是解決方案的一半。如果你希望它連續循環,另一半是從'a'內進行相同的呼叫。 –

+0

@BryanOakley哦,我錯過了這個問題的要求。我會盡快編輯我的答案 –