[pygtk] Defining and using my own signals

samwyse samwyse at gmail.com
Mon Sep 28 10:24:16 WST 2009


On Sun, Sep 27, 2009 at 5:44 PM, Saeed Rasooli <saeed.gnu at gmail.com> wrote:

>  [ a bunch of code ]
>
> On 9/27/09, samwyse <samwyse at gmail.com> wrote:
> > I writing a pygtk app that will use a plug in architecture.  I'm thinking
> > about reusing the existing signal mechanisms to trigger the plug-ins at
> the
> > appropriate times.  The tutorials don't go into how to define your own
> > signals.  Can anyone enlighten me?  Thanks.
>

I seem to be missing something.  Here's what I'm doing:

import gobject
class MyClass(gobject.GObject):
    def __init__(self):
        self.__gobject_init__()
        gobject.type_register(MyClass)
        gobject.signal_new(
            'my-signal',
            MyClass,
            gobject.SIGNAL_RUN_LAST,
            gobject.TYPE_NONE,
            [])
        print 'known signals:', gobject.signal_list_names(MyClass)
    def do_something(self):
        print 'sending signal'
        # TypeError: <...>: unknown signal name: my-signal
        self.emit('my-signal')
        print 'sent signal'
class Plugin(gobject.GObject):
    def __init__(self, base):
        self.__gobject_init__()
        # TypeError: <...>: unknown signal name: my-signal
        base.connect('my-signal', self.my_handler)
    def my_handler(self, sender):
        print 'inside handler'
if __name__ == '__main__':
    print 'glib_version =', gobject.glib_version
    print 'pygobject_version =', gobject.pygobject_version
    print 'pygtk_version =', gobject.pygtk_version
    myobject = MyClass()
    plugin = Plugin(myobject)
    myobject.do_something()

When I run it, I get this:

glib_version = (2, 18, 4)
pygobject_version = (2, 14, 2)
pygtk_version = (2, 14, 2)
known signals: ('my-signal',)
Traceback (most recent call last):
  File "C:\Documents and Settings\...\signals.py", line 30, in <module>
    plugin = Plugin(myobject)
  File "C:\Documents and Settings\...\signals.py", line 24, in __init__
    base.connect('my-signal', self.my_handler)
TypeError: <MyClass object at 0x15094e0 (GObject at 0xfd28c0)>: unknown
signal name: my-signal

Any ideas?  Thanks in advance.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.daa.com.au/pipermail/pygtk/attachments/20090927/f558a230/attachment.htm 


More information about the pygtk mailing list