如何发出一个自定义的Python类型参数一个PySide信号?(How do I emit a Py

2019-07-30 04:58发布

我有正确的,我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派生?

这是与Python 2.7.2和1.0.4 PySide在Windows 7上。

Answer 1:

您创建了一个“旧式级” ,这显然是不支持的信号参数的类型。

类要继承从另一个新式类,或从基本object类型:

class Foo(object):
    pass


文章来源: How do I emit a PySide signal with a custom python type argument?