我在我的tkinter代码中使用了'after'函数,如下所示:
def task():
#some work
root.after(1000, task)
root.after(1000, task)
我想知道一个task()函数在命中root.after()之后是否保留在那里,或者它会在命中行之后结束。
我是python和tkinter的新手,所以对正在发生的事情有点好奇。
提前致谢。
答案 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()'
会立即发生。