python - 如何在 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_())
我希望,当我单击计算按钮时,应该求解二次方程。
解决方案
您的问题没有确切的输入。但据我了解,如果您更改组合框的选择,那么您需要将所选文本显示在 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))
我认为这个例子适用于你的问题
推荐阅读
- laravel - Laravel 通过方法获取路由
- angular - Angular2- 带有下拉 NGbDropDown 或简单 Select Dropdown 的虚拟滚动条
- cmake - CMake ExternalProject_Add 使用自动设置变量
- testng - 在 TestNG 中使用 DependsOnMethod 时出错
- security - 使用 jwt 和 2 个服务器作为 secret_key 股东的跨域身份验证
- javascript - 如何处理用户在 Actions on Google 中提供的响应
- react-native - React Native __NSOperationInternal 崩溃报告
- vba - 如何在 Workbook.Close 方法之后运行存储在工作簿模块中的宏?
- java - 隔行扫描 BufferedWriter 和 PrintWriter
- php - onclick 使用 codeigniter 显示来自 dB 的图像