FAQ Python

FAQ PythonConsultez toutes les FAQ
Nombre d'auteurs : 11, nombre de questions : 188, dernière mise à jour : 14 juin 2021

le 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 (
)