2017-08-09 57 views
0

我想了解如何連接在python中使用pyqt5中的QtWidgets.QDoubleSpinBox更改爲方法。 AFAICS QtWidgets.QDoubleSpinBox.valueChanged不再具有連接功能(如在PYQT4中)。PYQT5連接QtWidgets.QDoubleSpinBox中的更改

我試圖尋找一個答案,但我只是不能似乎找到了如何做到這一點...

任何人誰知道?

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方法。

+0

你能告訴我如何實現myfunction嗎? – eyllanesc

回答

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_()) 
+0

感謝您的回覆,但我不能看到其中的差別這一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。 –

+0

你如何做測試,你按下了按鈕? – eyllanesc

+0

你的代碼片段工作正常,但我的代碼(如上所示)(在類方法中)沒有連接.. –