2012-12-04 3 views
0

저는 파이썬과 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를 사용하여) 읽기 용으로 설정 한 다음 바이트를 보내십시오 (또는 한번 불을 끄면 닫음). 그러면 수신기가 이벤트를 수신합니다.

첫 번째 옵션이 나에게 가장 적합합니다. 나는 그것을 할 수 있다고 말해주기 위해 두 번째를 포함시켰다. (당신이 요구하는 것과 거의 비슷하다.) 세 번째는 여러 스레드 또는 프로세스로 작업 할 때 유용 할 수 있으며 스레드 생성 또는 프로세스가 창을 만드는 것이 중요합니다.