0

私は以下のように私のtkinterコードで'after'関数を使用しました:

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

task()関数がroot.after()行にヒットした後もそこにとどまるのか、それとも行にヒットした後に終了するのか疑問に思います。

私はpythonとtkinterの初心者なので、何が起こっているのか少し興味があります。

前もって感謝します。

4

1 に答える 1

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()'コードを実行すると、すぐに発生することに気付くでしょう。

于 2013-03-14T09:57:47.953 に答える