【问题标题】:How do I create a new signal in pygtk如何在 pygtk 中创建新信号
【发布时间】:2010-09-09 03:58:51
【问题描述】:

我创建了一个 python 对象,但我想在它上面发送信号。我让它继承自 gobject.GObject,但似乎没有任何方法可以在我的对象上创建新信号。

【问题讨论】:

    标签: python gtk pygtk gobject


    【解决方案1】:

    你也可以在类定义中定义信号:

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

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

    【讨论】:

      【解决方案2】:

      方法如下:

      import gobject
      
      class MyGObjectClass(gobject.GObject):
          ...
      
      gobject.signal_new("signal-name", MyGObjectClass, gobject.SIGNAL_RUN_FIRST,
          None, (str, int))
      

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

      【讨论】:

        【解决方案3】:

        如果你使用 kiwi available here 你可以这样做:

        from kiwi.utils import gsignal
        
        class MyObject(gobject.GObject):
            gsignal('signal-name')
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-30
          • 2011-07-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多