1

これは、wxPythonのソースファイルからの抜粋です。

    """
    Create the output window if needed and write the string to it.
    If not called in the context of the gui thread then uses
    CallAfter to do the work there.
    """        

これは内部でどのように機能しますか?GUI関連の呼び出しが他のスレッドによって直接行われないことが重要なのはなぜですか?

そのようなGUIの概念を短く簡単な方法で説明するチャートや何かを知っていますか?

この問題を理解するために小説を読む必要がなければ、自分のデザインの選び方を知ることができればと思います。


編集:

これは以下の議論のためです:

ダイアグラム

4

1 に答える 1

1

それはとても簡単です。appキューについて考えてみましょう。wxPythonには独自の内部イベントキューがあります。メインスレッドから呼び出されるMainLoopを呼び出すときに、wxPythonにキューを処理させます。したがって、ウィジェットを変更するたびに、イベントキューを処理しているMainLoopに干渉することはありません。ただし、スレッドを追加すると、複数のスレッドがGUIを操作している、および/またはイベントキューとGUIアクセスが同期されていません。ここでwx.CallAfterが役立ちます。これは、指定された関数を呼び出す疑似イベントをEvent-Queueに追加するだけなので、メインスレッドから実行され、1つのスレッドだけがGUIにアクセスします。渡された関数がGUIを返すのにしばらく時間がかかると、それ以上のイベント(移動やクリックなど)が処理されないため、GUIがフリーズすることに注意してください。

関連:http ://wiki.wxpython.org/LongRunningTasks

于 2012-05-12T21:26:38.847 に答える