Exercice 14
Dans cet exercice, nous allons revisiter l'exercice 11. Cette fois-ci, remplaçons le QLineEdit par une liste déroulante QComboBox, comme indiqué dans l'image ci-dessous :
- Créez l'interface graphique sans utiliser Qt Designer (l'action du widget QComboBox n'est pas nécessaire pour le moment).
- Implémentez une méthode nommée action() qui récupère l'entier n sélectionné dans la liste QComboBox et affiche la table de multiplication sur le 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 |
# Importation des classes nécessaires depuis PyQt5 from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QComboBox import sys # Définition de la classe principale de l'application class MyApp(QWidget): # Méthode d'initialisation de la classe def __init__(self): # Appel du constructeur de la classe parente (QWidget) super().__init__() # Initialisation de l'interface utilisateur self.initUI() # Méthode pour initialiser l'interface utilisateur def initUI(self): # Définition du titre et des dimensions de la fenêtre principale self.setWindowTitle("Exemple de fenêtre PyQt5") self.setGeometry(100, 100, 500, 300) # Création d'un label pour indiquer à l'utilisateur de sélectionner une valeur lblSelect = QLabel("Sélectionnez une valeur : ", self) lblSelect.setStyleSheet("font-size:18px;") lblSelect.setGeometry(20, 20, 200, 30) # Création d'un label pour afficher le résultat de la table de multiplication self.lblResult = QLabel("Result", self) self.lblResult.setStyleSheet("QLabel { qproperty-alignment: 'AlignTop'; font-size:18px;}") self.lblResult.setGeometry(250, 20, 250, 300) # Création d'une liste déroulante (QComboBox) pour sélectionner une valeur self.qcombo = QComboBox(self) self.qcombo.addItems(['1', '2', '3', '4', '5', '6', '7', '8', '9']) self.qcombo.setStyleSheet("font-size: 18px;") # Connexion de l'événement de changement de texte à la méthode action self.qcombo.currentTextChanged.connect(self.action) self.qcombo.setGeometry(20, 50, 200, 30) # Méthode appelée en réponse à un changement dans la liste déroulante def action(self): # Récupération de l'entier sélectionné dans la liste déroulante n = int(self.qcombo.currentText()) table = "" # Boucle pour générer la table de multiplication for i in range(1, 10): mult = i * n ligne = str(i) + " x " + str(n) + " = " + str(mult) + "\n" table = table + ligne # Affichage de la table dans le label résultat table = f"Table de multiplication de {n} \n" + table self.lblResult.setText(table) # Point d'entrée du programme if __name__ == '__main__': # Création de l'application PyQt app = QApplication([]) # Création de l'instance de la classe principale myapp = MyApp() # Affichage de la fenêtre principale myapp.show() # Exécution de la boucle d'événements de l'application sys.exit(app.exec_()) |
Younes Derfoufi
CRMEF OUJDA