Python 如何在PyQt5中将QComboBox与QlineEdit连接
我正在开发一个PyQt5桌面GUI应用程序,但我正在尝试连接我的comboBox,以便更改comboBox中的变量会更改QlineEdit中的值,请提供任何帮助。谢谢 我试过几个代码,但它们的语法似乎不一致。下面是我的代码Python 如何在PyQt5中将QComboBox与QlineEdit连接,python,pyqt5,Python,Pyqt5,我正在开发一个PyQt5桌面GUI应用程序,但我正在尝试连接我的comboBox,以便更改comboBox中的变量会更改QlineEdit中的值,请提供任何帮助。谢谢 我试过几个代码,但它们的语法似乎不一致。下面是我的代码 from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def event(self): # get value of the selected combobox
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_())
我希望,当我单击“计算”按钮时,二次方程应该得到解。您的问题没有确切的输入。但据我所知,如果更改comboBox的选择,则需要在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))
这个例子可以解决您的问题,我认为您需要使用
QDoubleSpinBox
对行进行编辑
QDoubleSpinBox类提供了一个双精度的Spinbox小部件
您的示例可能如下所示:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class MyWin(QMainWindow):
def __init__(self):
super().__init__()
self.V, self.U, self.t, self.a = 0, 0, 0, 0
centralWidget = QtWidgets.QWidget()
self.setCentralWidget(centralWidget)
self.label = QLabel("MECHANICS")
self.calcbtn = QPushButton("SOLVE")
self.calcbtn.clicked.connect(self.onCalcbtn)
self.clrbtn = QPushButton("CLEAR")
self.clrbtn.clicked.connect(self.onClrbtn)
self.labelResult = QLabel()
self.spinBox1 = QDoubleSpinBox()
self.spinBox1.setMinimum(-2.3)
self.spinBox1.setMaximum(12)
self.spinBox1.setValue(4.4)
self.spinBox1.setSingleStep(0.02)
self.spinBox1.valueChanged.connect(self.valueChanged_V)
self.spinBox2 = QDoubleSpinBox()
# ... see self.spinBox1
self.spinBox2.valueChanged.connect(self.valueChanged_U)
self.spinBox3 = QDoubleSpinBox()
# ... see self.spinBox1
self.spinBox3.valueChanged.connect(self.valueChanged_t)
self.spinBox4 = QDoubleSpinBox()
# ... see self.spinBox1
self.spinBox4.valueChanged.connect(self.valueChanged_a)
formlayout = QFormLayout()
formlayout.addRow(QLabel("V"), self.spinBox1)
formlayout.addRow(QLabel("U"), self.spinBox2)
formlayout.addRow(QLabel("t"), self.spinBox3)
formlayout.addRow(QLabel("a"), self.spinBox4)
formlayout.addRow(QLabel("Result"), self.labelResult)
layH = QHBoxLayout()
layH.addWidget(self.clrbtn)
layH.addWidget(self.calcbtn)
layout = QVBoxLayout(centralWidget)
layout.addWidget(self.label)
layout.addLayout(formlayout)
layout.addLayout(layH)
def valueChanged_V(self):
self.V = self.spinBox1.value()
def valueChanged_U(self):
self.U = self.spinBox2.value()
def valueChanged_t(self):
self.t = self.spinBox3.value()
def valueChanged_a(self):
self.a = self.spinBox4.value()
def onClrbtn(self):
self.spinBox1.setValue(0)
self.spinBox2.setValue(0)
self.spinBox3.setValue(0)
self.spinBox4.setValue(0)
self.V, self.U, self.t, self.a = 0, 0, 0, 0
self.labelResult.setText("")
def onCalcbtn(self):
formulars = "V + U + t + a = {:,.4f}".format(self.V + self.U + self.t + self.a)
self.labelResult.setText(formulars)
# 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
if __name__=="__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
# MainWindow = QtWidgets.QMainWindow()
# ui = Ui_MainWindow()
# ui.setupUi(MainWindow)
# MainWindow.show()
myapp = MyWin()
myapp.show()
sys.exit(app.exec_())
在事件定义中,lineEdit设置为setText。。。它将给出错误。。。setText必须被赋值为“self.combo.itemText(index)”从组合框中传递该索引的值。