Exercice 3
Reprendre l'exercice précédent (Exercice2) sans utiliser le bouton de commande validate. L'action du bouton sera remplacé par la méthode textChanged() de l'objet QLineEdit:
Solution
1) - on réalise facilement l'application avec Qt Designer et on l'enregistre sous le nom app.ui
I) - Première méthode en utilisant le module loadui
On crée dans le même répertoire où se trouve app.ui un fichier main.py et on importe au sein duquel le fichier app.ui et on crée ensuite la méthode validate qui réalise l'action.
2) - code du fichier main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# coding: utf-8 import sys from PyQt5.QtWidgets import QApplication from PyQt5 import uic # méthode qui valide l'action def validate(): name = ui.fieldName.text() ui.lblresult.setText("Hello : " + name) # création d'une application PyQt5 app = QApplication(sys.argv) # on charge le fichier app.ui ui = uic.loadUi('app.ui') # on associe la méthode validate au bouton de commande validate ui.fieldName.textChanged.connect(validate) ui.show() app.exec_() |
Deuxième méthode: création de l'application sans utiliser le module loadui
à l'aide de la commande cmd naviguer jusqu'au répertoire du fichier app.ui et exécuter la commande suivante pour générer le fichier main.py:
1 |
pyuic5 -x app.ui -o main.py |
Code du fichier app.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(404, 189) self.label = QtWidgets.QLabel(Form) self.label.setGeometry(QtCore.QRect(70, 10, 151, 16)) font = QtGui.QFont() font.setPointSize(14) self.label.setFont(font) self.label.setObjectName("label") self.fieldName = QtWidgets.QLineEdit(Form) self.fieldName.setGeometry(QtCore.QRect(70, 50, 261, 31)) self.fieldName.setObjectName("fieldName") self.lblresult = QtWidgets.QLabel(Form) self.lblresult.setGeometry(QtCore.QRect(70, 100, 261, 31)) font = QtGui.QFont() font.setPointSize(14) font.setBold(False) font.setWeight(50) self.lblresult.setFont(font) self.lblresult.setObjectName("lblresult") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.label.setText(_translate("Form", "Saisir votre nom :")) self.lblresult.setText(_translate("Form", "result here ...")) |
Code du fichier main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# coding: utf-8 import sys from PyQt5.QtWidgets import QApplication from app import * # méthode qui valide l'action def validate(): name = ui.fieldName.text() ui.lblresult.setText("Hello : " + name) # création d'une application PyQt5 import sys app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = Ui_Form() ui.setupUi(Form) ui.fieldName.textChanged.connect(validate) Form.show() sys.exit(app.exec_()) |
Younes Derfoufi
CRMEF OUJDA
1 thought on “Solution Exercice 3: message de bienvenue aux utilisateurs sur une fenêtre PyQt5”