如何在pygtk中创建新信号

时间:2008-09-15 20:41:59

标签: python gtk pygtk gobject

我已经创建了一个python对象,但我想在其上发送信号。我让它继承自gobject.GObject,但似乎没有办法在我的对象上创建一个新信号。

3 个答案:

答案 0 :(得分:11)

您还可以在类定义中定义信号:

class MyGObjectClass(gobject.GObject):
    __gsignals__ = {
      "some-signal": (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (object, )),
    }

元组的内容与gobject.signal_new的最后三个参数相同。

答案 1 :(得分:4)

以下是:

import gobject

class MyGObjectClass(gobject.GObject):
    ...

gobject.signal_new("signal-name", MyGObjectClass, gobject.SIGNAL_RUN_FIRST,
    None, (str, int))

倒数第二个参数是返回类型,最后一个参数是参数类型的元组。

答案 2 :(得分:2)

如果您使用可用的奇异果here,您可以这样做:

from kiwi.utils import gsignal

class MyObject(gobject.GObject):
    gsignal('signal-name')