Les menus Pyside6
Les menus Pyside6
📘 PySide6 — Les menus avec QMenu (cours clair et structuré)
Ce cours explique simplement comment fonctionnent les menus en PySide6, en utilisant explicitement QMenu, sans raccourcis peu lisibles.
🎯 Objectifs
À la fin de ce cours, tu sauras :
- créer un menu simple
- ajouter un séparateur
- créer un sous-menu
- créer un sous-menu avec choix exclusif et coches
- connecter une action à une méthode (
test())
🧠 Principe fondamental
QMenuBar: la barre de menus (en haut de la fenêtre)QMenu: un menu ou un sous-menuQAction: une ligne cliquable dans un menu
👉 Un menu est un objet (QMenu) que l’on crée, puis que l’on ajoute à la barre.
🧱 Base minimale (obligatoire)
Les menus fonctionnent uniquement avec QMainWindow.
1
2
3
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QMenu
from PySide6.QtGui import QAction
1️⃣ Menu simple avec séparateur et action test()
🎯 Objectif
Menu Fichier :
- Ouvrir → affiche
test - ─────────
- Quitter → ferme l’application
💻 Code complet
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
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QMenu
from PySide6.QtGui import QAction
class Fenetre(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Menus PySide6")
# Barre de menus
menu_bar = self.menuBar()
# Menu Fichier (création explicite)
menu_fichier = QMenu("Fichier", self)
# Actions
action_ouvrir = QAction("Ouvrir", self)
action_quitter = QAction("Quitter", self)
# Connexions
action_ouvrir.triggered.connect(self.test)
action_quitter.triggered.connect(self.close)
# Insertion dans le menu
menu_fichier.addAction(action_ouvrir)
menu_fichier.addSeparator()
menu_fichier.addAction(action_quitter)
# Ajout à la barre
menu_bar.addMenu(menu_fichier)
def test(self):
print("test")
app = QApplication(sys.argv)
fenetre = Fenetre()
fenetre.show()
sys.exit(app.exec())
2️⃣ Menu avec sous-menu
1
2
3
4
5
6
7
8
9
menu_edition = QMenu("Édition", self)
menu_preferences = QMenu("Préférences", self)
action_general = QAction("Général", self)
menu_preferences.addAction(action_general)
menu_edition.addMenu(menu_preferences)
self.menuBar().addMenu(menu_edition)
3️⃣ Sous-menu avec choix exclusif et coches (✓)
Menu Affichage → Thème :
- ✓ Système (par défaut)
- ☐ Clair
- ☐ Sombre
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from PySide6.QtGui import QActionGroup
menu_affichage = QMenu("Affichage", self)
menu_theme = QMenu("Thème", self)
groupe_theme = QActionGroup(self)
groupe_theme.setExclusive(True)
action_systeme = QAction("Système", self, checkable=True)
action_clair = QAction("Clair", self, checkable=True)
action_sombre = QAction("Sombre", self, checkable=True)
action_systeme.setChecked(True)
for action in (action_systeme, action_clair, action_sombre):
groupe_theme.addAction(action)
menu_theme.addAction(action)
menu_affichage.addMenu(menu_theme)
self.menuBar().addMenu(menu_affichage)
✅ Conclusion
Les menus PySide6 deviennent simples dès que :
- les objets sont explicites
- la hiérarchie est visible
- on évite les raccourcis opaques
This post is licensed under CC BY 4.0 by the author.