Python GObject.add_emission_钩子用法

Python GObject.add_emission_钩子用法,python,gobject,pygobject,Python,Gobject,Pygobject,我被亲切地指示使用下面的一个,但我似乎找不到一个使用示例 有人可以分享吗?在与IRC#pygtk上的热心人士讨论后,我想到了以下几点: import gobject class Signals(gobject.GObject): __gsignals__ = { "lastfm_username_changed": (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,)) #@Undef

我被亲切地指示使用下面的一个,但我似乎找不到一个使用示例


有人可以分享吗?

在与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")

我只能找到一些google的codesearch、、或koders、*的例子,但也许它们可以帮助您?据我所知,您使用它的方式与«object»相同。连接,只是您将类作为第一个参数传递(PyGTK版本也接受一个对象;我想它会自动为您接受该类)。因此,对于您提到的特定示例,它将是gobject.add_emission_hook(Car,'engine start',myCallback)。但我从未真正使用过它,所以我可能错了。