私は以下のように私のtkinterコードで'after'関数を使用しました:
def task():
#some work
root.after(1000, task)
root.after(1000, task)
task()関数がroot.after()行にヒットした後もそこにとどまるのか、それとも行にヒットした後に終了するのか疑問に思います。
私はpythonとtkinterの初心者なので、何が起こっているのか少し興味があります。
前もって感謝します。
コールバックを内部的に登録し、遅延を引き起こさないを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()'
コードを実行すると、すぐに発生することに気付くでしょう。