PyQt5 Tutorials

Maîtriser les barres de menus PyQt5 : Guide complet

Spread the love

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 :

  1. Création d’une barre de menus basique
  2. Ajout d’icônes aux éléments de menu
  3. Implémentation d’éléments de menu à cocher
  4. Création de sous-menus
  5. Ajout de raccourcis clavier
  6. 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) ...

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *