0

私はpythonとgtkを使っています。変数を探すチェッカースレッドがあります。すべての条件に問題がない場合は、gtk.mainループにイベントを発生させる必要があります。発生したイベントはウィンドウを開き、他のことを開始する必要があります。

そのようなもの:

if x==True and y==True:
   raise event

def event:
   newWindow()

これを実装する方法のコード例を教えてください

4

2 に答える 2

2

だから..自分でやった。

コードは簡単です:

import gobject

class XX(gobject.GObject):
    # define signal parameters
    __gsignals__ = { 'signal-name' : (gobject.SIGNAL_RUN_FIRST, gobject.SIGNAL_TYPE_NONE, ())}

    gobject.__init__(self)

    def __init__(self):
        # some code

    def function(self):
        # emit signal
        self.emit('signal-name')
于 2012-12-06T10:41:37.447 に答える
1

gtkイベントには常にターゲットがあります。「メインループに」イベントを送信することはできません。ほとんどのターゲットはウィジェットです。あなたはできる:

  1. イベントを送信する代わりに、ウィンドウを作成するだけです。ウィンドウは作成中にイベントを取得し、必要に応じて処理できます。
  2. 前に新しい新しいウィンドウを作成しますが、それを非表示にして、イベントをウィンドウに送信します。
  3. パイプを作成し、(glib.io_add_watchを使用して)読み取るように設定してから、バイトを送信します(または、一度起動した場合は閉じます)。リスナーはイベントを受信します。

最初のオプションは私にとって最も理にかなっています。私はそれができることをあなたに伝えるために2番目を含めました(それはあなたが求めるものに最も似ています)。3つ目は、複数のスレッドまたはプロセスで作業している場合に役立つことがあり、どのスレッドまたはプロセスがウィンドウの作成を行うかが重要です。

于 2012-12-04T08:12:04.747 に答える