PYQT5连接QtWidgets.QDoubleSpinBox中的更改

时间:2017-08-09 11:45:19

标签: python pyqt5

我试图找出如何在python中使用pyqt5将QtWidgets.QDoubleSpinBox中的更改连接到方法。 AFAICS QtWidgets.QDoubleSpinBox.valueChanged不再具有连接功能(如在PYQT4中)。

我试图寻找答案,但我似乎无法找到如何实现这一目标......

有谁知道?

EDIT1> 谢谢你的回复,但我看不出这个区别:

感谢您的回复,但我看不出这个

的区别
self.dsbGR = QtWidgets.QDoubleSpinBox(self.centralwidget)
self.dsbGR.setDecimals(3)
self.dsbGR.setSingleStep(0.1)
self.dsbGR.setProperty("value", 3.0)
self.dsbGR.setObjectName("dsbGR")
self.dsbGR.valueChanged.connect(myfunction)

最后一行不起作用,没有connect方法。

1 个答案:

答案 0 :(得分:1)

我认为问题在于您没有使用new style of signal and slots connection,在下面的示例中,我展示了它与小部件QDoubleSpinBox一起使用。

from PyQt5 import QtCore, QtGui, QtWidgets


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QMainWindow.__init__(self, parent)
        self.centralwidget = QtWidgets.QWidget(self)
        self.setCentralWidget(self.centralwidget)
        self.centralWidget().setLayout(QtWidgets.QVBoxLayout())


        self.dsbGR = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.dsbGR.setDecimals(3)
        self.dsbGR.setSingleStep(0.1)
        self.dsbGR.setProperty("value", 3.0)
        self.dsbGR.setObjectName("dsbGR")
        self.dsbGR.valueChanged.connect(self.onValueChanged)
        self.centralWidget().layout().addWidget(self.dsbGR)

    def onValueChanged(self, val):
        print(val)

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())