PySide中的信号和插槽-定义类中的插槽



我是Qt和PySide的新手,尝试了解PySide中的信号和插槽。

在PySide中学习Signals和Slots的文档时,我试图转移一些代码以便在课堂上使用。

以下代码创建一个DoubleSpinBox。当更改值时,我希望函数value_changed_funcvalue_changed_class都打印该值,但只调用value_changed_func

from PySide import QtCore
from PySide import QtGui
@QtCore.Slot(float)
def value_changed_func(value):
    print "Event func:"
    print value
class MainController(QtCore.QObject):
    def __init__(self, parent):
        self._ui = QtGui.QDoubleSpinBox(parent)
        self._ui.valueChanged.connect(self.value_changed_class)
        self._ui.valueChanged.connect(value_changed_func)
    @QtCore.Slot(float)
    def value_changed_class(self, value):
        print "Event class:"
        print value

app = QtGui.QApplication([])
main_window = QtGui.QMainWindow()
MainController(main_window)
main_window.show()
app.exec_()

我做错了什么?如何调用value_changed_class

您没有调用父构造函数:

def __init__(self, parent):
    super(MainController, self).__init__(parent)
    ...

最新更新