2013-08-03 36 views
4

我試圖將滑塊的值轉換爲函數,並在lineEdit小部件中顯示此函數的值。 這裏是我的代碼:如何將滑塊連接到PyQt4中的函數?

class MyForma1(object): 
    def AddWidgets1(self, Form): 
     Form.setObjectName(_fromUtf8("Form")) 
     Form.resize(579, 542) 
     self.horizontalSlider = QtGui.QSlider(Form) 
     self.horizontalSlider.setGeometry(QtCore.QRect(120, 380, 321, 31)) 
     self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) 
     self.horizontalSlider.setInvertedAppearance(False) 
     self.horizontalSlider.setInvertedControls(False) 
     self.horizontalSlider.setObjectName(_fromUtf8("horizontalSlider")) 
     self.lineEdit = QtGui.QLineEdit(Form) 
     self.lineEdit.setGeometry(QtCore.QRect(112, 280, 331, 20)) 
     self.lineEdit.setObjectName(_fromUtf8("lineEdit")) 

     self.retranslateUi(Form) 
     QtCore.QObject.connect(self.horizontalSlider, QtCore.SIGNAL('valueChanged(int)'), Form.changeText) 

    def retranslateUi(self, Form): 
     Form.setWindowTitle(_translate("Form", "Form", None)) 

class MyForma2(QtGui.QDialog, MyForma1): 
    def __init__(self, z11=0): 
     QtGui.QDialog.__init__(self) 
     self.AddWidgets1(self) 
     self.z = z11 

    def myfunc1(self): 
     self.z = self.horizontalSlider.value 


    def changeText(self): 
     self.myfunc1() 
     self.lineEdit.setText(str(self.z)) 

if __name__ == "__main__": 
    import sys 
    app = QtGui.QApplication(sys.argv) 
    Forma = MyForma2() 
    Forma.show() 
    sys.exit(app.exec_()) 

我想要檢索滑塊的值,並將其分配給self.z,在這種情況下,我想知道我應該不是寫這個是什麼: self.z = self.horizo​​ntalSlider.value

回答

4

應當self.horizontalSlider.value(),因爲value是一個可調用。 然而,QHorizontalSlider.valueChanged信號還發出滑塊的價值,所以你可以按照以下步驟改變你的changeText方法:

def changeText(self, value): 
    self.z = value 
    self.lineEdit.setText(str(self.z)) 

也可以考慮使用新樣式的信號插槽機制:http://pyqt.sourceforge.net/Docs/PyQt4/new_style_signals_slots.html