2

因此,我可以看到使用 PyQt4 创建样式信号的唯一方法如下:

class MyCustomClass(QtCore.QThread):
    custom_signal = QtCore.pyqtSignal(str)

我的不满是,如果我在其他任何地方声明该信号,pyqt 会向我抛出一个关于 custom_signal 没有 connect() 函数的错误。

当我想做一些简单的事情时,我想创建一个辅助函数来帮助删除样板/重复代码:启动一个新线程,在该线程中工作,将结果作为信号发送给对象。但是当我需要在类中定义信号时很难。

有什么办法让信号只是一个局部变量?

4

1 回答 1

1

不确定我是否正确理解了您的问题,但从您的评论看来,定义一个适用于任何类型的信号就足够了?如果是这种情况,您可以使用object作为类型:

class MyCustomClass(QtCore.QThread):
    custom_signal = QtCore.pyqtSignal(object)

简单测试:

>>> def callback(result):
...    print type(result)
...
>>> obj = MyCustomClass()
>>> obj.custom_signal.connect(callback)
>>> obj.custom_signal.emit('hello')
<type 'str'>
>>> obj.custom_signal.emit({'x': 1})
<type 'dict'>
于 2012-06-26T09:58:12.403 回答