I'm developing a PyQt5 desktop GUI app, but am try to connect my comboBox such that, changing the variable in the combobox changes the values in the QlineEdit, please any help will be appreciated. Thanks
I have tried several codes but it seems their syntax was not corresponding. below is my code.
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_())
I expect that, when I clicked the calculate button, the quadratic equation should be solved.
Your question doesn't have exact input. But as my understanding, If you change the selection of comboBox then you need the selected text to be displayed on the QLineEdit right?
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))
This example will work for your question I think
You need to use QDoubleSpinBox
instead of LineEdit
.
The QDoubleSpinBox class provides a spin box widget that takes doubles.
Your example might look something like this:
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_())
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.