FAQ Python

FAQ PythonConsultez toutes les FAQ
Nombre d'auteurs : 11, nombre de questions : 188, dernière mise à jour : 14 juin 2021
Sommaire→GUI→Tkinter / Tix / Pmw→Tkinter→Menule widget Menu peut être utiliser pour créer une barre de menu dans une fenêtre. Pour cela, vous devez tout d'abord
définir un premier Menu de parent une fenêtre ( mainmenu = Tk.Menu(root) ) puis associé ce menu à la fenêtre
( root.config(menu = mainmenu) ).
Pour ajouter des menus à la barre de menu, vous créerez de nouveaux Menu ayant pour parent le premier menu crée
( menuExample = Tk.Menu(mainmenu) ) et sera insérée à la barre par la fonction add_cascade ( mainmenu.add_cascade(label = "Exemple", menu=menuExample) ).
La fonction add_cascade(**options) peut recevoir une liste de paramètres où les principaux sont label pour le titre du menu fils et menu représentant
l'indentifiant du menu fils en question.
Pour ajouter des options à un menu fils, vous utilisez la fonction add_command(**options) qui peut recevoir une liste de paramètres et où les principaux sont
label pour le titre de l'option et command qui représente la fonction associée au clic sur l'option.
# -*- coding: cp1252 -*-
import Tkinter as Tk
import tkMessageBox
root = Tk.Tk() ## Fenêtre principale
def Affiche(): tkMessageBox.showinfo("Exemple d'un Menu Tkinter")
def About(): tkMessageBox.showinfo("A propos", "Version 1.0")
mainmenu = Tk.Menu(root) ## Barre de menu
menuExample = Tk.Menu(mainmenu) ## Menu fils menuExample
menuExample.add_command(label="Affiche", command=Affiche) ## Ajout d'une option au menu fils menuFile
menuExample.add_command(label="Quitter", command=root.quit)
menuHelp = Tk.Menu(mainmenu) ## Menu Fils
menuHelp.add_command(label="A propos", command=About)
mainmenu.add_cascade(label = "Exemple", menu=menuExample)
mainmenu.add_cascade(label = "Aide", menu=menuHelp)
root.config(menu = mainmenu)
root.mainloop()
La méthode add_separator() permet de rajouter une ligne de séparation dans un menu.
# -*- coding: cp1252 -*-
import Tkinter as Tk
import tkMessageBox
root = Tk.Tk()
def Affiche(): tkMessageBox.showinfo("Exemple d'un Menu Tkinter")
def About(): tkMessageBox.showinfo("A propos", "Version 1.0")
mainmenu = Tk.Menu(root)
menuExample = Tk.Menu(mainmenu)
menuExample.add_command(label="Affiche", command=Affiche)
menuExample.add_separator() ## Ajout d'une ligne séparatrice
menuExample.add_command(label="Quitter", command=root.quit)
mainmenu.add_cascade(label = "Exemple", menu = menuExample)
root.config(menu = mainmenu)
root.mainloop()
Le widget Menu admet un paramètre booléen tearoff qui indique si le menu en question peut être détaché de son parent ou non; par défaut, tearoff = 1 et le menu est détachable. Un menu détachable est caractérisé par la présence d'une ligne pointillée en son début.
import Tkinter as Tk
root = Tk.Tk()
mainmenu = Tk.Menu(root)
menunondetachable = Tk.Menu(mainmenu, tearoff = 0)
menudetachable = Tk.Menu(mainmenu, tearoff = 1)
mainmenu.add_cascade(label="Menu1", menu = menunondetachable)
mainmenu.add_cascade(label="Menu2", menu = menudetachable)
menunondetachable.add_command(label="Quit", command = fenetre.quit)
menudetachable.add_command(label="Quit", command = fenetre.quit)
root.config(menu = mainmenu)
root.mainloop ()


