4

スレッドからGUI関数を呼び出すべきではないと言われていますが、GUIに直接影響する関数を呼び出す場合にのみ適用できるのか、GUIライブラリが提供するすべての関数に適用できるのか疑問に思います。たとえば、次のように呼び出すのが安全です。

gobject.idle_add(self.gui.get_object('button1').set_sensitive, False)

スレッドで?self.gui.get_objectはGUIフレームワークの関数ですが、self.gui.get_object('button1')が実際に呼び出しているためです。

ご回答ありがとうございます。

4

2 に答える 2

1

あなたがそこで示した電話は安全のようです。すでに投稿されているように、どのスレッドでも()を問題なく読み取ることができますが、メインスレッドでget_objectのみ()を変更する必要があります。set_sensitiveまさにこれはここで行われidle_add、メインスレッドで実行されているメインループにイベントを追加します。

于 2012-07-23T15:37:46.993 に答える
0

GUIを使用したスレッド化は少し注意が必要です。正しく実行したい場合は、メインスレッド以外のスレッド内からGUIを更新しないでください(GUIライブラリの一般的な制限)。ただし、複数のスレッドから複数の読み取り呼び出しを行うことができます。

于 2012-05-02T08:53:43.600 に答える