Exercice 9
Question 1 : Veuillez générer un fichier intitulé "nombre-distint.ui" en utilisant l'éditeur visuel Qt Designer. Ce fichier doit définir une fenêtre qui sollicite l'utilisateur à saisir un nombre entier. La fenêtre doit ensuite afficher au click sur le bouton le résultat du nombre saisi distinct ou non distinct sur le label result, conformément à l'illustration ci-dessous:
Noter que, pour le moment, nous ne mettons pas en place l'action associée au bouton de commande.
Question 2 : Une fois le fichier "nombre-distint.ui" créé, convertissez-le en un fichier Python nommé "nombre-distint.py" en utilisant la commande suivante :
1 |
pyuic5 -x nombre-distint.ui -o nombre-distint.py |
Question 3 : Au sein de la classe Ui_Form générée par Qt Designer, créer une méthode nommée distinct() qui permet de tester si un entier donné est distint ou non.
Question 4 : Implémentez une méthode appelée "action()" et associez-la à l'événement click du widget QPushButton. Cette méthode doit afficher le résultat du nombre saisi distinct ou non distinct sur le QLabel nommé "label_result".
Solution
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(367, 157) self.label = QtWidgets.QLabel(Form) self.label.setGeometry(QtCore.QRect(10, 20, 111, 16)) self.label.setObjectName("label") self.label_result = QtWidgets.QLabel(Form) self.label_result.setGeometry(QtCore.QRect(120, 60, 200, 21)) self.label_result.setObjectName("label_result") self.lineEdit_N = QtWidgets.QLineEdit(Form) self.lineEdit_N.setGeometry(QtCore.QRect(120, 20, 191, 20)) self.lineEdit_N.setObjectName("lineEdit_N") self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(120, 100, 191, 23)) self.pushButton.setObjectName("pushButton") # bind button with action self.pushButton.clicked.connect(self.action) 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", "Enter Value Of N :")) self.label_result.setText(_translate("Form", "Result here ...")) self.pushButton.setText(_translate("Form", "Validate")) # Check if a given number is distinct def distinct(self, n): # initialisation de la valeur de retour value = True # convertir n en une chaine de caractères s = str(n) for x in s: if s.count(x) > 1: value = False break if value == True: return True else: return False # Create the button action def action(self): N = int(self.lineEdit_N.text()) # Check if N is a distinct number and display the result on the result label if self.distinct(N): self.label_result.setText("The number " + str(N) + " is distinct") else: self.label_result.setText("The number " + str(N) + " is not distinct") if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_()) |
Younes Derfoufi
CRMEF OUJDA