logo oujood
🔍

Créer un menu avec Tkinter

Menu, sous-menus, séparateurs, raccourcis — tout pour construire une barre de navigation complète ou un menu contextuel au clic droit.

OUJOOD.COM

Tkinter distingue deux types de menus : la barre de menus fixée en haut de la fenêtre (comme Fichier, Édition, Aide dans la plupart des logiciels) et le menu contextuel qui apparaît au clic droit. Les deux utilisent le même widget Menu, mais leur façon d'être rattachés à la fenêtre diffère.

Barre de menus simple

La structure est toujours la même : un Menu racine attaché à la fenêtre via config(menu=...), puis des sous-menus ajoutés avec add_cascade() :

📋 Copier le code

tearoff=0 désactive la petite ligne pointillée en haut du menu qui permettrait de le détacher en fenêtre flottante — un comportement daté que la quasi-totalité des développeurs désactivent.

Raccourcis clavier dans les menus

Les paramètres accelerator et underline ajoutent des indications visuelles de raccourcis. La liaison effective se fait séparément avec bind() :

📋 Copier le code

accelerator n'active pas le raccourci — il affiche seulement le texte dans le menu. La liaison réelle se fait avec bind(). Ce comportement surprend souvent les débutants, mais c'est intentionnel : Tkinter laisse le développeur gérer les conflits de raccourcis lui-même.

Menu contextuel au clic droit

Un menu contextuel est un Menu ordinaire affiché à la position du curseur via post() :

📋 Copier le code

tk_popup() affiche le menu aux coordonnées absolues de l'écran (x_root, y_root). Le bloc try/finally avec grab_release() assure que le menu se ferme proprement sur toutes les plateformes — c'est le pattern recommandé dans la documentation officielle de Tkinter.

Par carabde | Mis à jour le 30 avril 2025