LE MENU
Un menu donne du contenu à votre interface et permet d'organiser les tâches de votre application de façon plus homogène.
Voici différents tutoriels sur les menus tk :
Création d'un menu et sous-menu
Pour créer un menu voici la commande :
menu .m . configure -menu .m
pour ajouter un sous menu :
menu .m.f
.m add cascade -menu .m.f -label "File"
.m.f add command -label "Exit" -command { exit }
Petite remarque :
Le menu est dit 'décrochable' c'est à dire qu'il y a un ligne en pointillé qui permet de le décrocher du menu.
Pour enlever cette ligne il suffit d'"écrire :
menu .m.f -tearoff 0
-tearoff 0 empèchera ce décrochement
Menu PopUp
pour créer un popup menu :
menu .m -tearoff 0 .m add command -label Beep .m add command -label Exit -command {exit} bind . "" "showMenu %X %Y" wm title . popupmenu wm geometry . 350x250+300+300 proc showMenu {x y} { tk_popup .m $x $y }
ajouter un checkbutton ou un radiobutton dans un sous menu

Aujourd'hui nous allons créer une barre de menu dans un fenêtre et luis ajouter un checkbutton et deux radibutton.
Créons d'abord le menu option comme ceci :
menu .menubar
. configure -menu .menubar
menu .menubar.options -tearoff 0
.menubar add cascade -label "Options" -menu .menubar.options
en bas mettons ce code :
# Checkbutton .menubar.options add checkbutton -label "Afficher la grille" \ -variable afficherGrille -command {puts "afficherGrille = $::afficherGrille"}
# Deux radiobuttons .menubar.options add radiobutton -label "Mode texte" -variable mode \ -value "texte" -command {puts "mode = $::mode"} .menubar.options add radiobutton -label "Mode graphique" -variable mode \ -value "graphique" -command {puts "mode = $::mode"}
Voici le code complet de notre exemple :
package require Tk # Variables set afficherGrille 0 set mode "texte" menu .menubar . configure -menu .menubar menu .menubar.options -tearoff 0 .menubar add cascade -label "Options" -menu .menubar.options # Checkbutton .menubar.options add checkbutton -label "Afficher la grille" -variable afficherGrille -command {puts "afficherGrille = $::afficherGrille"} .menubar.options add separator # Deux radiobuttons .menubar.options add radiobutton -label "Mode texte" -variable mode -value "texte" -command {puts "mode = $::mode"} .menubar.options add radiobutton -label "Mode graphique" -variable mode -value "graphique" -command {puts "mode = $::mode"} pack [label .l -text "Menu de démonstration"] -padx 20 -pady 20
Une remarque très intéressante :
voyez comment est notée la variable mode :
$::mode
les deux point confirme que la variable mode appartient au namespace principal. Ainsi on peeut l'appeler durectement sans passer par la commande global.