关于python:’PySide.QtCore.Signal’对象没有属性’connect’

'PySide.QtCore.Signal' object has no attribute 'connect'

我将Python 3.4与Pyside 1.2.4和PyQt 4.8.7结合使用,当我尝试将Signal连接到插槽时,它说:

'PySide.QtCore.Signal' object has no attribute 'connect'

我正在使用MVC:

模型:

1
2
3
4
5
from PySide.QtCore import Signal
class Model(object):

    def __init__(self):
        self.updateProgress = Signal(int)

控制器:

1
2
3
4
5
6
7
8
9
class Controller(QWidget):
"""
MVC Pattern: Represents the controller class

"""

def __init__(self, parent=None):
    super().__init__(parent)
    self.model = Model()
    self.model.updateProgress.connect(self.setProgress)

当我在Pycharm中查找类时,按住CTRL并单击Signal类,它看起来如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Signal(object):
""" Signal"""
def __call__(self, *args, **kwargs): # real signature unknown
   """ Call self as a function."""
    pass

def __getitem__(self, *args, **kwargs): # real signature unknown
   """ Return self[key]."""
    pass

def __init__(self, *args, **kwargs): # real signature unknown
    pass

@staticmethod # known case of __new__
def __new__(*args, **kwargs): # real signature unknown
   """ Create and return a new object.  See help(type) for accurate signature."""
    pass

def __str__(self, *args, **kwargs): # real signature unknown
   """ Return str(self)."""
    pass

...虽然实际上应该有根据PySide文档进行连接,断开连接和发出方法的方法,该方法可在以下位置获得:

https://srinikom.github.io/pyside-docs/PySide/QtCore/Signal.html#PySide.QtCore.Signal.connect

谢谢您的帮助


信号必须在类而不是实例上定义。 该类必须是QObject的子类,或者是此类的mixin。 因此,以下任何一项:

1
2
class Model(QtCore.QObject):
    updateProgress = Signal(int)

要么:

1
2
3
4
5
class Mixin(object):
    updateProgress = Signal(int)

class Model(Mixin, QtCore.QObject):
    pass