Ce tutoriel fournit un guide complet pour créer et personnaliser les barres de menus dans PyQt5. Nous aborderons plusieurs exemples, en progressant d’une implémentation de base vers des fonctionnalités plus avancées, notamment l’ajout d’icônes et d’éléments de menu à cocher. À la fin, vous serez capable de créer des menus robustes et conviviaux pour vos applications PyQt5.
Table des matières :
- Création d’une barre de menus basique
- Ajout d’icônes aux éléments de menu
- Implémentation d’éléments de menu à cocher
- Création de sous-menus
- Ajout de raccourcis clavier
- Menus contextuels
1. Création d’une barre de menus basique
Cette section montre le processus fondamental d’ajout d’une barre de menus à votre application PyQt5 et de son remplissage avec des menus et des actions. Cet exemple crée un menu « Fichier » simple avec les options « Nouveau », « Ouvrir » et « Quitter ».
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Exemple de barre de menus PyQt5")
menubar = self.menuBar()
file_menu = menubar.addMenu("Fichier")
new_action = QAction("Nouveau", self)
open_action = QAction("Ouvrir", self)
exit_action = QAction("Quitter", self)
file_menu.addAction(new_action)
file_menu.addAction(open_action)
file_menu.addSeparator()
file_menu.addAction(exit_action)
exit_action.triggered.connect(QApplication.instance().quit)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
2. Ajout d’icônes aux éléments de menu
L’ajout d’icônes améliore l’expérience utilisateur. Cette section montre comment intégrer des icônes dans vos éléments de menu.
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction
from PyQt5.QtGui import QIcon
# ... (classe MainWindow de l'exemple précédent) ...
new_action.setIcon(QIcon("new.png")) # Remplacez par le chemin de votre icône
open_action.setIcon(QIcon("open.png")) # Remplacez par le chemin de votre icône
exit_action.setIcon(QIcon("exit.png")) # Remplacez par le chemin de votre icône
# ... (reste du code de l'exemple précédent) ...
N’oubliez pas de remplacer ` »new.png »`, ` »open.png »` et ` »exit.png »` par les chemins réels vers vos fichiers d’icônes. Assurez-vous que les icônes se trouvent dans le même répertoire que votre script Python ou fournissez le chemin complet.
3. Implémentation d’éléments de menu à cocher
Les éléments de menu à cocher permettent aux utilisateurs d’activer ou de désactiver les options. Cet exemple montre leur création et leur gestion.
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction
# ... (classe MainWindow de l'exemple précédent) ...
toolbar_action = QAction("Afficher la barre d'outils", self, checkable=True)
toolbar_action.setChecked(True)
file_menu.addAction(toolbar_action)
toolbar_action.triggered.connect(self.toggle_toolbar)
def toggle_toolbar(self, checked):
print(f"Visibilité de la barre d'outils : {checked}") # Remplacez par votre logique de barre d'outils
# ... (reste du code de l'exemple précédent) ...
4. Création de sous-menus
Organisez logiquement vos éléments de menu avec des sous-menus.
# ... (dans __init__ de MainWindow) ...
edit_menu = menubar.addMenu("Edition")
undo_action = QAction("Annuler", self)
redo_action = QAction("Rétablir", self)
edit_menu.addAction(undo_action)
edit_menu.addAction(redo_action)
# ...
5. Ajout de raccourcis clavier
Améliorez la convivialité avec des raccourcis clavier.
# ... (dans __init__ de MainWindow) ...
exit_action.setShortcut("Ctrl+Q")
# ...
6. Menus contextuels
Implémentez des menus contextuels (clic droit).
# ... (dans __init__ de MainWindow) ...
self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.customContextMenuRequested.connect(self.show_context_menu)
def show_context_menu(self, pos):
menu = QMenu(self)
copy_action = QAction("Copier", self)
paste_action = QAction("Coller", self)
menu.addAction(copy_action)
menu.addAction(paste_action)
menu.exec_(self.mapToGlobal(pos))
# ...
Ce tutoriel étendu fournit une base plus complète pour travailler avec les barres de menus dans PyQt5. N’oubliez pas d’installer PyQt5 à l’aide de pip install PyQt5
. Vous pouvez développer ces exemples pour créer des menus encore plus complexes et riches en fonctionnalités pour vos applications.