SOに関する最近の質問に続いて、GObjectの「add_emission_hook」を使用するように親切に指示され ましたが、使用例が見つからないようです。
誰か共有してください。
SOに関する最近の質問に続いて、GObjectの「add_emission_hook」を使用するように親切に指示され ましたが、使用例が見つからないようです。
誰か共有してください。
IRC #pygtk で親切な人々と議論した後、私が思いついたのは次のとおりです。
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")