Tutoriel Tkinter - Menubar

  1. Barre de menus de base de Tkinter
  2. Commande Tkinter Menubar

Un des éléments les plus courants de l’interface graphique est la barre de menu. Une barre de menu se trouve normalement sous la barre de titre pour afficher la série de menus. Après avoir cliqué sur l’un des menus de niveau supérieur, un sous-menu sera étendu pour afficher des éléments de menu plus pertinents. Un sous-menu est normalement lié à une commande spécifique comme open, close, save ou quit.

Barre de menus de base de Tkinter

Nous allons créer notre premier exemple de barre de menus qui a un menu Fichier comme dans la plupart des éditeurs. Nous n’incluons que les sous-menus Open, Save et Exit pour plus de simplicité.

Tkinter Menubar_Basic.py
import tkinter as tk
 
app = tk.Tk() 
app.geometry('300x200')
app.title("Basic Menu Bar")

menubar = tk.Menu(app)

filemenu = tk.Menu(menubar)
filemenu.add_command(label="Open")
filemenu.add_command(label="Save")
filemenu.add_command(label="Exit")

menubar.add_cascade(label="File", menu=filemenu)

app.config(menu=menubar)

app.mainloop()

Tkinter Menubar Basic

menubar = tk.Menu(app)

Le paramètre donné du Menu est le widget parent du menu créé. La ligne de code ci-dessus signifie que le widget de menu menubar sera le niveau supérieur du cadre app.

filemenu = tk.Menu(menubar)

De même, filemenu est le menu du widget menubar, ou le sous-menu du frame app.

filemenu.add_command(label="Open")

La commande add_command ajoute les commandes au menu filemenu. label est le texte affiché dans le sous-menu.

menubar.add_cascade(label="File", menu=filemenu)

Le filemenu est ajouté à menubar avec la commande add_cascade. Fichier File est l’étiquette de menu affichée dans le niveau supérieur du cadre app.

app.config(menu=menubar)

Bien que menubar soit créé pour être un widget enfant de app comme nous l’avons expliqué ci-dessus, vous devez toujours le configurer pour qu’il soit le menu de app. Sinon, aucune barre de menu ne sera affichée dans l’interface graphique.

Elle ne répond pas du tout si vous cliquez sur les options comme Open ou Save dans le sous-menu de File parce qu’il n’y a pas encore de commande attachée à celles-ci. Nous rendrons cette commande fonctionnelle lors de la prochaine session.

Commande Tkinter Menubar

Tkinter Menubar_Command.py
import tkinter as tk
from tkinter import filedialog

def onOpen():
    print(filedialog.askopenfilename(initialdir = "/",title = "Open file",filetypes = (("Python files","*.py;*.pyw"),("All files","*.*"))))
 
def onSave():
    print(filedialog.asksaveasfilename(initialdir = "/",title = "Save as",filetypes = (("Python files","*.py;*.pyw"),("All files","*.*"))))
 
app = tk.Tk() 
app.geometry('300x200')
app.title("Menu Bar Command")

menubar = tk.Menu(app)

filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="Open", command=onOpen)
filemenu.add_command(label="Save", command=onSave)
filemenu.add_command(label="Exit", command=app.quit)

menubar.add_cascade(label="File", menu=filemenu)

app.config(menu=menubar)

app.mainloop()

filemenu = tk.Menu(menubar, tearoff=0)

Par défaut, tearoff' est réglé sur1’ et il détacherait les menus de la fenêtre principale pour créer un menu flottant si les lignes pointillées en haut sont cliquées. Ici, il est réglé à 0 pour désactiver cette fonctionnalité flottante.

filemenu.add_command(label="Open", command=onOpen)

La fonction onOpen est liée au menu Open, et sera appelée quand Open est cliqué.

def onOpen():
    print(filedialog.askopenfilename(initialdir = "/",title = "Open file",filetypes = (("Python files","*.py;*.pyw"),("All files","*.*"))))

Cette fonction affiche le dialogue ouvert et retourne le nom du fichier sélectionné. Dans notre exemple, nous n’ouvrons pas vraiment le fichier mais nous imprimons son nom.

tkfiledialog a trois fonctions,

Fonction Paramètres Description
.askopenfilename Répertoire, Titre, Extension Pour ouvrir le dossier : Dialogue qui demande la sélection d’un fichier existant.
.asksaveasfilename Répertoire, Titre, Extension) Pour sauvegarder le fichier : Dialogue qui demande la création ou le remplacement d’un fichier.
.askdirectory Aucun Pour ouvrir le répertoire
filemenu.add_command(label="Exit", command=app.quit)

Tkinter a une fonction interne de quit qui quitte l’interface graphique racine. Nous pourrions simplement lier cette fonction existante à Exit plutôt que de créer notre propre fonction exit.

comments powered by Disqus