我想自定义信号添加到一个类 -PyGTK的自定义信号发送列表作为参数
class TaskBrowser(gobject.GObject):
__list_signal__ = (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (<List datatype>,))
__gsignals__ = {'tasks-deleted': __list_signal__}
...
def on_delete_tasks(self, widget=None, tid=None):
...
gobject.idle_add(self.emit, "tasks-deleted", deleted_tasks) #deleted_tasks is of type 'list'
...
...
在__gsignals__
字典,当我说出list
作为参数类型,我收到以下错误追踪 -
File "/home/manhattan/GTG/Hamster_in_hands/GTG/gtk/browser/browser.py", line 61, in <module>
class TaskBrowser(gobject.GObject):
File "/usr/lib/python2.7/site-packages/gobject/__init__.py", line 60, in __init__
cls._type_register(cls.__dict__)
File "/usr/lib/python2.7/site-packages/gobject/__init__.py", line 115, in _type_register
type_register(cls, namespace.get('__gtype_name__'))
TypeError: Error when calling the metaclass bases
could not get typecode from object
我看到的possible parameter types名单,而且也没有类型list
有没有一种方法,我可以通过一个列表是一个信号参数?
尝试TYPE_PYOBJECT。 – XORcist
它的工作原理!使用'object'或'gobject.TYPE_PYOBJECT'。 请你解释一下为什么? –
指定TYPE_PYOBJECT时,可以使用任何Python对象。我猜它基本上代表'任何'。缺点是缺乏类型安全。 – XORcist