Exercice 2
Concevoir une application graphique à l'aide de la bibliothèque PyQt5 qui affiche à l'utilisateur une fenêtre lui demandant de saisir son nom sur une zone de texte et en cliquant sur le bouton validate, l'application lui affiche le message Hello suivi de son nom comme le montre la figure ci-dessous:
- - Le champ de saisie sera nommé fieldName
- - le label qui affiche le résultat sera nommé lblresult
- - le bouton qui valide l'action sera nommé validate
1) - enregistrer le fichier créer par Qt Designer sous le nom de app.ui
2) - coder l'application sur un fichier main.py de deux façons différentes:
- La première en chargeant directement le fichier app.ui à l'aide du module load ui
- La deuxième en générant le fichier main.py à l'aide de la commande pyuic5
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.validate.clicked.connect(validate) ui.show() app.exec_() |
II) - 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 33 34 35 36 37 38 39 40 |
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(404, 235) 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.validate = QtWidgets.QPushButton(Form) self.validate.setGeometry(QtCore.QRect(70, 150, 261, 31)) font = QtGui.QFont() font.setPointSize(14) self.validate.setFont(font) self.validate.setObjectName("validate") 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.validate.setText(_translate("Form", "Valider")) 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 21 22 23 24 25 26 27 28 |
# coding: utf-8 import sys from PyQt5.QtWidgets import QApplication , QWidget , QLineEdit from app import * # création de la méthode qui valide l'action def validate(): # récupération du contenu du champ de saisi name = ui.fieldName.text() # affectation du contenu au label ui.lblresult.setText("Hello : " + name) # création d'une application PyQt5 app = QApplication(sys.argv) # création d'une fenêtre PyQt5 Form = QWidget() # création d'un objet d'instance de la classe Ui_Form ui = Ui_Form() ui.setupUi(Form) # associer la méthode validate au bouton validate ui.validate.clicked.connect(validate) Form.show() app.exec_() |
Younes Derfoufi
CRMEF OUJDA
2 thoughts on “Solution Exercice 2: message de bienvenue au utilisateur avec PyQt5”