Tkinter会不会浪费资源?

时间:2013-03-14 09:40:30

标签: python tkinter

我在我的tkinter代码中使用了'after'函数,如下所示:

def task():
     #some work
     root.after(1000, task)
root.after(1000, task)

我想知道一个task()函数在命中root.after()之后是否保留在那里,或者它会在命中行之后结束。

我是python和tkinter的新手,所以对正在发生的事情有点好奇。

提前致谢。

1 个答案:

答案 0 :(得分:3)

它没有,因为task()调用Tk.after()在内部注册回调并且不会导致延迟。之后task()就会存在。

例如(Python3):

import tkinter as tk

root = tk.Tk()

TIMEOUT = 3000
i = 0
def task():
    global i
    i += 1
    print('In task(), i={}'.format(i))
    root.after(TIMEOUT, task)
    print('Called root.after() and exiting task()')


root.after(TIMEOUT, task)
root.mainloop()

输出结果为:

In task(), i=1
Called root.after() and exiting task()
In task(), i=2
Called root.after() and exiting task()
In task(), i=3
Called root.after() and exiting task()

如果您运行代码,您会注意到'Called root.after() and exiting task()'会立即发生。