سؤال

لقد تم توجيهي إلى الاستخدام 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")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top