1

私は物理学をシミュレートするプログラムを書いていますが、after()役に立つことがわかりました。

物理演算とシミュレーション用のスレッドを作成したいと思っています。しかし、ようやくその機能に気づいたとき、代わりにそれを使用しました。

ですから、Tkinter がその機能をどのように実装しているかに興味があります。マルチスレッドですか?

4

2 に答える 2

5

マルチスレッドではありません。

Tkinter は、オブジェクトをキューから取り出して処理することで機能します。通常、このキューにあるのは、ユーザーによって生成されたイベント (マウスの動き、ボタンのクリックなど) です。

このキューには、 で作成されたジョブなど、他のものを含めることができますafter。したがって、Tkinter にとって、送信されたものafterは、特定の時点で処理される別のイベントにすぎません。

于 2012-06-15T11:09:26.833 に答える
1

次のスクリプトは、GUI を 5 秒間フリーズするため、マルチスレッド化されません。

from Tkinter import Tk, Label
from time import sleep
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
w.after(100, lambda: sleep(5))
root.mainloop()
于 2012-06-15T08:23:48.027 に答える