2017-03-02 46 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哦,我错过了这个问题的要求。我会尽快编辑我的答案 –