2010-01-18 7 views
0

나는 recent question on SO 다음에 GObject's "add_emission_hook"을 사용하도록 지시되었지만 사용 예제를 찾을 수 없습니다.GObject.add_emission_hook 사용법

공유 할 사람이 있습니까? IRC의 #pygtk에 도움이 사람들과 함께 토론 후

+0

난 단지 구글의 codesearch, http://google.com/codesearch와 몇 가지 예를 찾을 수 있을까? hl = en & lr = & q = "add_emission_hook"+ lang : python & sbtn = 검색, 또는 koders, http://www.koders.com/default.aspx?s="add_emission_hook"&submit=Search&la=Python&li=*,하지만 아마도 도와 드릴까요? –

+0

내가 말할 수있는 한, 당신은 첫 번째 매개 변수로 클래스를 전달한다는 점을 제외하고는 (object를 받아들이는 것을 제외하고는) "object".connect와 같은 방식으로 사용한다. (PyGTK 버전은 객체를 받아 들인다.). 따라서 언급 한 특정 예제의 경우 gobject.add_emission_hook (Car, 'engine-started', myCallback)이됩니다. 나는 그것을 실제로 사용한 적이 없으므로 잘못되었을 수도 있습니다. –

답변

0

은, 여기에 내가 생각 해낸 것입니다 :

import gobject 

class Signals(gobject.GObject): 

    __gsignals__ = { 
     "lastfm_username_changed": (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,)) #@UndefinedVariable 
    } 

    def __init__(self): 
     gobject.GObject.__init__(self) 


class Bus(object): 
    """ 
    Message Bus - Borg pattern 
    """ 
    _signals=Signals() 

    @classmethod 
    def emit(cls, name, *pa, **kwa): 
     cls._signals.emit(name, *pa, **kwa) 

    @classmethod 
    def add_emission_hook(cls, name, callback): 
     gobject.add_emission_hook(cls._signals, name, callback) 


if __name__=="__main__": 

    def callback(self, data): 
     print "callback: data=%s" % data 

    Bus.add_emission_hook("lastfm_username_changed", callback) 

    Bus.emit("lastfm_username_changed", "jldupont")