Exercice 22 || Solution
Dans ce TP graphique PyQt5 on vous demande de réaliser une application graphique via l'outil visuel Qt Designer qui demande à l'utilisateur de saisir un entier n et de tester si ce nombre est de Harshad!
On rappelle qu'un entier n>0 est de Harshad s'il est divisible par la somme de ses chiffres.
Exemple: n = 120 est divisible par 1+2+0=3 et par suite n=120 est un nombre de Harshad. Par contre n=25 n'est pas de Harshad puisque 25 n'est pas divisible par 2+5=7.

- Construire l'interface graphique en utilisant Qt Designer tout en respectant les directives suivantes:
- Le champ de saisie doit être nommé lineEdit_n
- Le label qui affiche la somme des chiffres de n doit être nommé : lbl_somme_chiffres
- le label qui affiche le résultat : le nombre n est de harshad ou non doit être nommé: lbl_harchad
- Le bouton de commande 'Valider' doit être nommé : btn_validate
- Enregistrez le fichier sous app.ui
- Créer le fichier python de l'interface graphique app.py à l'aide de la commande : pyuic5 - Ecrire une fonction Python nommée somme_digits(n) permettant de calculer la somme des chiffres d'un entier n.
- En déduire le code d'une autre fonction nommée est_harshad(n) permettant de tester si un entier n est de Harshad ou non. La fonction doit retourner True si n est de harshad et False dans le cas contraire.
- Créer un fichier python main.py dans lequel importer le contenu du fichier app.py et y ajouter le code de bouton de commande 'btn_validate' qui réalise l'action.
Solution
1) - Après avoir crée l'application graphique app.ui, on transforme ce dernier en un fichier python à l'aide de la commande:
|
1 |
pyuic5 -x app.ui -o app.py |
et dans ce cas on obtient un fichier python nommé app.py dans le même répertoire que celui de app.ui comme le montre la figure suivante:

Questions 2), 3) et 4)
|
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 |
from app import * import sys ### 2ème question ### # Fonction qui calcul la somme des chiffres de n def somme_digits(n): # initialisation de la somme des chiffres s = 0 while n > 0: r = n%10 s = s + r n = n // 10 return s ### 3ème question ### # fonction qui examine si un entier n est de Harshad def est_harshad(n): # récupération de la somme des chiffres de n somme = somme_digits(n) # Vérification de la divisibilité if n % somme == 0: return True else: return False ### 4ème question ### # fonction de validation de l'action def btn_validate(): # Récupération de l'entier n saisie n = int(ui.lineEdit_n.text()) # Insérer la somme des chiffres de n dans le label ui.lbl_somme_chiffres.setText("Somme des chiffres = " + str(somme_digits(n))) if est_harshad(n): ui.lbl_harshad.setText("Oui "+ str(n) + " est un nombre de Harshad") else: ui.lbl_harshad.setText("Non "+ str(n) + " n'est pas un nombre de Harshad") app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = Ui_Form() ui.setupUi(Form) ui.btn_validate.clicked.connect(btn_validate) Form.show() sys.exit(app.exec_()) |
Younes Derfoufi CRMEF OUJDA



