'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
谢谢您的帮助
信号必须在类而不是实例上定义。 该类必须是
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 |