Je viens de commencer à utiliser Pyqt5 et Jusqu'à présent, je suis capable de convertir Celsius à Fahrenheit A> Mais je suis un peu confus sur la façon de convertir en Celsius lorsque je tape une valeur dans la zone Fahrenheit Lineditit, Exemple . Comment puis-je vérifier s'il ya une valeur dans la case et la convertissez-la à l'aide d'un seul bouton?
Convertisseur de température P>
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(299, 140) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.lineEdit = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit.setGeometry(QtCore.QRect(10, 40, 121, 21)) self.lineEdit.setObjectName("lineEdit") self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit_2.setGeometry(QtCore.QRect(160, 40, 121, 21)) self.lineEdit_2.setObjectName("lineEdit_2") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(110, 70, 75, 23)) self.pushButton.setObjectName("pushButton") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(160, 20, 61, 16)) self.label_2.setObjectName("label_2") self.label_3 = QtWidgets.QLabel(self.centralwidget) self.label_3.setGeometry(QtCore.QRect(10, 20, 61, 16)) self.label_3.setObjectName("label_3") self.label_4 = QtWidgets.QLabel(self.centralwidget) self.label_4.setGeometry(QtCore.QRect(140, 40, 21, 20)) self.label_4.setObjectName("label_4") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 299, 21)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) self.pushButton.clicked.connect(self.Celsius_Line) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.pushButton.setText(_translate("MainWindow", "Convert")) self.label_2.setText(_translate("MainWindow", "Fahrenheit")) self.label_3.setText(_translate("MainWindow", "Celsius")) self.label_4.setText(_translate("MainWindow", "=")) def Celsius_Line(self): c = str(float(self.lineEdit.text()) * (9/5) + 32 ) self.lineEdit_2.setText(c) def Fahrenheit_Line(self): f = str(float(self.lineEdit_2.text()) * (9/5) - 32) self.lineEdit.setText(f) 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_())
4 Réponses :
Je ne comprends pas complètement quel est le problème.
Mais si je comprends bien, vous voulez vérifier si la partie "LineDit" est vide.
si lignedit.text ()! = '': code>
Si vous le faites, si "LineDit" est vide, "true" sera retourné et vous pouvez corriger votre code en conséquence. P>
code modifié, si Celcius est vide, il conviendra de Fahrenheit. Sinon Cel à Fahrenheit
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(299, 140) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.lineEdit = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit.setGeometry(QtCore.QRect(10, 40, 121, 21)) self.lineEdit.setObjectName("lineEdit") self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit_2.setGeometry(QtCore.QRect(160, 40, 121, 21)) self.lineEdit_2.setObjectName("lineEdit_2") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(110, 70, 75, 23)) self.pushButton.setObjectName("pushButton") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(160, 20, 61, 16)) self.label_2.setObjectName("label_2") self.label_3 = QtWidgets.QLabel(self.centralwidget) self.label_3.setGeometry(QtCore.QRect(10, 20, 61, 16)) self.label_3.setObjectName("label_3") self.label_4 = QtWidgets.QLabel(self.centralwidget) self.label_4.setGeometry(QtCore.QRect(140, 40, 21, 20)) self.label_4.setObjectName("label_4") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 299, 21)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) self.pushButton.clicked.connect(self.Converteither) #Mod here def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.pushButton.setText(_translate("MainWindow", "Convert")) self.label_2.setText(_translate("MainWindow", "Fahrenheit")) self.label_3.setText(_translate("MainWindow", "Celsius")) self.label_4.setText(_translate("MainWindow", "=")) def Celsius_Line(self): c = str(float(self.lineEdit.text()) * (9/5) + 32 ) self.lineEdit_2.setText(c) def Fahrenheit_Line(self): f = str(float(self.lineEdit_2.text()) * (9/5) - 32) self.lineEdit.setText(f) def Converteither(self): if self.lineEdit.text() == "": f = str(float(self.lineEdit_2.text()) * (9/5) - 32) self.lineEdit.setText(f) else: c = str(float(self.lineEdit.text()) * (9/5) + 32 ) self.lineEdit_2.setText(c) 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_())
Supprimer le def Celsius_Line (auto) et Fahrenheit_line (auto-) et connectez le bouton avec contrôle
Contrôle;
Merci j'avais une idée similaire mais j'ai oublié comment il était vide, c'est très utile
Vous pouvez choisir comme réponse.
Avec la suggestion de la bilgin furkan où je pose les bonnes formules et corrigée ligneDit.SetText pour la partie Celsius:
def control(self): # With correct formulas try: if self.lineEdit.text() == "" and self.lineEdit_2.text() != "": c = str((float(self.lineEdit_2.text())-32)*(5/9)) self.lineEdit.setText(c) elif self.lineEdit_2.text() == "" and self.lineEdit.text() != "": f = str(float(self.lineEdit.text())*(9/5) + 32) self.lineEdit_2.setText(f) else: print("please fill only one box.") # you can change that except: print('please enter a number') # you can change that
Ajoutez votre code ici. Il y a une méthode pour obtenir les valeurs du widget de saisie de texte.Si tout le monde est vide, vous pouvez décider de la conversion.
Le code a été ajouté, j'ai également ajouté des exemples d'images de la sortie souhaitée pour rendre les choses plus faciles pour les personnes confondues.
Veuillez vérifier le code mis à jour ici ici Stackoverflow.com/a/62466052/10849457 N'oubliez pas de marquer résolu
Merci pour l'aide