2012-12-04 43 views
0

我正在使用python和gtk。 有一個檢查線程,它查找變量。如果所有條件都正常,則應該向gtk.main循環引發一個事件。提出的事件應該打開一個窗口並開始一些其他的事情。python gtk + events

它是這樣的:

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

def event: 
    newWindow() 

請給一個代碼示例如何實現此

回答

1

所以..自己做完了。

的代碼很簡單:

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') 
1

GTK事件總是有一個目標。您無法將事件發送到「主循環」。大多數目標是小部件。您可以:

  1. 只需創建窗口,而不是發送活動。該窗口將在創建期間獲得您可以處理的事件。
  2. 之前創建新的窗口,但隱藏它,並將事件發送到窗口。
  3. 創建一個管道並將其設置爲讀取(使用glib.io_add_watch),然後向其發送一個字節(或者如果它觸發一次,關閉它),並且偵聽器將接收事件。

第一個選項對我最有意義。我包括第二個只是爲了告訴你它可以完成(它最類似於你所要求的)。如果您使用多個線程或進程,第三個可能會很有用,並且對於您創建窗口的哪個線程或進程非常重要。