Nous vous donnons dans ces exemples de codes, trois type de fenêtres en PyQt5 avec des menus, en utilisant différentes approches : une forme simple, un exemple orienté objet avec QMenuBar, et un autre exemple avec QMainWindow. Ces trois exemples montrent différentes façons de créer et gérer des menus dans une application PyQt5.
Exemple 1 : Fenêtre avec Menu (Forme Simple)
Cet exemple crée une fenêtre avec un menu simple sans utiliser de classes ou de concepts orientés objet.
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 |
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QMenuBar import sys def simple_menu(): app = QApplication(sys.argv) window = QMainWindow() window.setWindowTitle("Fenêtre avec Menu Simple") window.setGeometry(100, 100, 600, 400) # Création de la barre de menu menu_bar = QMenuBar(window) window.setMenuBar(menu_bar) # Ajout du menu file_menu = menu_bar.addMenu("Fichier") # Ajout d'actions au menu new_action = QAction("Nouveau", window) open_action = QAction("Ouvrir", window) exit_action = QAction("Quitter", window) file_menu.addAction(new_action) file_menu.addAction(open_action) file_menu.addSeparator() file_menu.addAction(exit_action) # Quitter l'application lors du clic sur "Quitter" exit_action.triggered.connect(app.quit) window.show() sys.exit(app.exec_()) if __name__ == '__main__': simple_menu() |
Exemple 2 : Fenêtre avec Menu (POO avec QMenuBar)
Cet exemple utilise une classe orientée objet pour créer une fenêtre avec un menu en utilisant QMenuBar.
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 |
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QMenuBar import sys class FenetreAvecMenu(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Fenêtre avec Menu (POO)") self.setGeometry(100, 100, 600, 400) self.creer_menu() def creer_menu(self): # Création de la barre de menu menu_bar = QMenuBar(self) self.setMenuBar(menu_bar) # Menu "Fichier" file_menu = menu_bar.addMenu("Fichier") # Actions pour le menu "Fichier" new_action = QAction("Nouveau", self) open_action = QAction("Ouvrir", self) exit_action = QAction("Quitter", self) # Ajouter les actions file_menu.addAction(new_action) file_menu.addAction(open_action) file_menu.addSeparator() file_menu.addAction(exit_action) # Connecter l'action quitter exit_action.triggered.connect(self.close) if __name__ == '__main__': app = QApplication(sys.argv) fenetre = FenetreAvecMenu() fenetre.show() sys.exit(app.exec_()) |
Exemple 3 : Fenêtre avec Menu utilisant QMainWindow
Ce troisième exemple crée une fenêtre plus complète en utilisant QMainWindow avec un menu et des sous-menus.
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 |
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction import sys class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Fenêtre avec Menu utilisant QMainWindow") self.setGeometry(100, 100, 600, 400) self.init_ui() def init_ui(self): # Création de la barre de menu menu_bar = self.menuBar() # Menu "Fichier" file_menu = menu_bar.addMenu("Fichier") # Actions new_action = QAction("Nouveau", self) open_action = QAction("Ouvrir", self) exit_action = QAction("Quitter", self) # Ajout des actions file_menu.addAction(new_action) file_menu.addAction(open_action) file_menu.addSeparator() file_menu.addAction(exit_action) # Menu "Édition" edit_menu = menu_bar.addMenu("Édition") copy_action = QAction("Copier", self) paste_action = QAction("Coller", self) # Ajout des actions au menu Édition edit_menu.addAction(copy_action) edit_menu.addAction(paste_action) # Menu "Aide" help_menu = menu_bar.addMenu("Aide") about_action = QAction("À propos", self) help_menu.addAction(about_action) # Connecter les actions exit_action.triggered.connect(self.close) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) |
Younes Derfoufi
CRMEF OUJDA
1 thought on “Fenêtre PyQt5 avec Menu”