我在 PySide python Qt 程序中正确使用信号时遇到问题。我想发出一个信号,该信号采用自定义 python 类型的单个参数。文件 说_
可以使用 QtCore.signal() 类定义信号。Python 类型和 C 类型可以作为参数传递给它。
所以我尝试了以下方法:
from PySide import QtCore
from PySide.QtCore import QObject
class Foo:
pass
class Bar(QObject):
sig = QtCore.Signal(Foo)
def baz(self):
foo = Foo()
self.sig.emit(foo)
bar = Bar()
bar.baz()
但是得到以下错误:
Traceback (most recent call last):
File "test.py", line 15, in <module>
bar.baz()
File "test.py", line 12, in baz
self.sig.emit(foo)
TypeError: sig() only accepts 0 arguments, 1 given!
相反,如果我从 QObject 派生 Foo 类,则程序运行不会出错。但是我是否应该能够将我的自定义类型作为参数传递给信号,即使该类型不是从 QObject 派生的?
这适用于 Windows 7 上的 python 2.7.2 和 PySide 1.0.4。