循环进入Tkinter实例

时间:2017-03-02 17:30:56

标签: python 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 个答案:

答案 0 :(得分:1)

root.after(10, a())非常接近你想要的,但第二个参数a()立即运行a并使用其返回值(None)。

您想引用a,而不是运行它。使用root.after(10, a)

此外,正如Bryan Oakley在评论中指出的那样,你需要一些方法来继续安排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)