首页 > 解决方案 > 如何在 PyQt5 中将 QComboBox 与 QlineEdit 连接起来

问题描述

我正在开发一个 PyQt5 桌面 GUI 应用程序,但我尝试连接我的组合框,以便更改组合框中的变量会更改 QlineEdit 中的值,请提供任何帮助。谢谢

我尝试了几个代码,但似乎它们的语法不对应。下面是我的代码。

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):

    def event(self):
      # get value of the selected combobox data

        V = float(self.input1.text())
        U = float(self.input2.text())
        t = float(self.input3.text())
        a = float(self.input4.text())

        #conditions
        #if u,t,a are given, use this formulars
        V = U + a*t
        S = U*t + (a*t**2)/2
        t = (V - U)/a        
        #if u,a,s are given, 
        V =(U**2 + 2*a*S)**0.5
        S = (V**2 - U**2)/2*a 

        #set the selected combobox result
        self.lineEdit_result.setText


    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(347, 219)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setGeometry(QtCore.QRect(20, 40, 31, 22))
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.input1 = QtWidgets.QLineEdit(self.centralwidget)
        self.input1.setGeometry(QtCore.QRect(60, 40, 113, 20))
        self.input1.setObjectName("input1")
        self.comboBox_1 = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox_1.setGeometry(QtCore.QRect(20, 70, 31, 22))
        self.comboBox_1.setObjectName("comboBox_1")
        self.comboBox_1.addItem("")
        self.comboBox_1.addItem("")
        self.comboBox_1.addItem("")
        self.comboBox_1.addItem("")
        self.comboBox_1.addItem("")
        self.input2 = QtWidgets.QLineEdit(self.centralwidget)
        self.input2.setGeometry(QtCore.QRect(60, 70, 113, 20))
        self.input2.setObjectName("input2")
        self.comboBox_2 = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox_2.setGeometry(QtCore.QRect(20, 100, 31, 22))
        self.comboBox_2.setObjectName("comboBox_2")
        self.comboBox_2.addItem("")
        self.comboBox_2.addItem("")
        self.comboBox_2.addItem("")
        self.comboBox_2.addItem("")
        self.comboBox_2.addItem("")
        self.input3 = QtWidgets.QLineEdit(self.centralwidget)
        self.input3.setGeometry(QtCore.QRect(60, 100, 113, 20))
        self.input3.setObjectName("input3")
        self.comboBox_3 = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox_3.setGeometry(QtCore.QRect(20, 130, 31, 22))
        self.comboBox_3.setObjectName("comboBox_3")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.input4 = QtWidgets.QLineEdit(self.centralwidget)
        self.input4.setGeometry(QtCore.QRect(60, 130, 113, 20))
        self.input4.setObjectName("input4")
        self.comboBox_ANS = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox_ANS.setGeometry(QtCore.QRect(20, 190, 31, 22))
        self.comboBox_ANS.setObjectName("comboBox_ANS")
        self.comboBox_ANS.addItem("")
        self.comboBox_ANS.addItem("")
        self.comboBox_ANS.addItem("")
        self.comboBox_ANS.addItem("")
        self.comboBox_ANS.addItem("")
        self.lineEdit_result = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_result.setGeometry(QtCore.QRect(60, 190, 113, 20))
        self.lineEdit_result.setObjectName("lineEdit_result")
        self.calcbtn = QtWidgets.QPushButton(self.centralwidget)
        self.calcbtn.setGeometry(QtCore.QRect(110, 160, 75, 23))
        self.calcbtn.setObjectName("calcbtn")
        ##########################################################
        self.calcbtn.clicked.connect(self.event)
        #########################################################
        self.clrbtn = QtWidgets.QPushButton(self.centralwidget)
        self.clrbtn.setGeometry(QtCore.QRect(20, 160, 75, 23))
        self.clrbtn.setObjectName("clrbtn")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(20, 10, 81, 16))
        self.label.setObjectName("label")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        self.comboBox_1.setCurrentIndex(1)
        self.comboBox_2.setCurrentIndex(2)
        self.comboBox_3.setCurrentIndex(3)
        self.comboBox_ANS.setCurrentIndex(4)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Mechanics"))
        self.comboBox.setItemText(0, _translate("MainWindow", "V"))
        self.comboBox.setItemText(1, _translate("MainWindow", "U"))
        self.comboBox.setItemText(2, _translate("MainWindow", "a"))
        self.comboBox.setItemText(3, _translate("MainWindow", "t"))
        self.comboBox.setItemText(4, _translate("MainWindow", "S"))
        self.comboBox_1.setItemText(0, _translate("MainWindow", "V"))
        self.comboBox_1.setItemText(1, _translate("MainWindow", "U"))
        self.comboBox_1.setItemText(2, _translate("MainWindow", "a"))
        self.comboBox_1.setItemText(3, _translate("MainWindow", "t"))
        self.comboBox_1.setItemText(4, _translate("MainWindow", "S"))
        self.comboBox_2.setItemText(0, _translate("MainWindow", "V"))
        self.comboBox_2.setItemText(1, _translate("MainWindow", "U"))
        self.comboBox_2.setItemText(2, _translate("MainWindow", "a"))
        self.comboBox_2.setItemText(3, _translate("MainWindow", "t"))
        self.comboBox_2.setItemText(4, _translate("MainWindow", "S"))
        self.comboBox_3.setItemText(0, _translate("MainWindow", "V"))
        self.comboBox_3.setItemText(1, _translate("MainWindow", "U"))
        self.comboBox_3.setItemText(2, _translate("MainWindow", "a"))
        self.comboBox_3.setItemText(3, _translate("MainWindow", "t"))
        self.comboBox_3.setItemText(4, _translate("MainWindow", "S"))
        self.comboBox_ANS.setItemText(0, _translate("MainWindow", "V"))
        self.comboBox_ANS.setItemText(1, _translate("MainWindow", "U"))
        self.comboBox_ANS.setItemText(2, _translate("MainWindow", "a"))
        self.comboBox_ANS.setItemText(3, _translate("MainWindow", "t"))
        self.comboBox_ANS.setItemText(4, _translate("MainWindow", "S"))
        self.calcbtn.setText(_translate("MainWindow", "SOLVE"))
        self.clrbtn.setText(_translate("MainWindow", "CLEAR"))
        self.label.setText(_translate("MainWindow", "MECHANICS"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)

    MainWindow = QtWidgets.QMainWindow()

    ui = Ui_MainWindow()

    ui.setupUi(MainWindow)

    MainWindow.show()

    sys.exit(app.exec_())

我希望,当我单击计算按钮时,应该求解二次方程。

标签: pythonpyqt5

解决方案


您的问题没有确切的输入。但据我了解,如果您更改组合框的选择,那么您需要将所选文本显示在 QLineEdit 上吗?

class DisplayText(QMainWIndow):
    def __init__(self, parent=None):
        super(DisplayText, self).__init__(parent):

        self.combo = QComboBox(self)
        list = ['a','b','c','d','e']
        self.combo.addItems(list)
        self.combo.currentIndexChanged.connect(self.changeText)
        self.text = QLineEdit(self)
        self.show()

    def changeText(self, index):
        self.text.setText(self.combo.itemText(index))

我认为这个例子适用于你的问题


推荐阅读