LE MENUBUTTON

Un menubutton est un simple bouton qui, lors d'un clic, affiche un menu déroulant. Il hérite du même comportement qu'un menu traditionnel.

creation d'un menubutton


 

A) Exemple concret

Dans cet exemple nous allons voir:
- Comment créer un menu bouton.
- Comment définir un texte, une image pour chaque item du menu
- Comment créer un évènement réaction à un clic sur une item.
- Comment ajouter une ligne de séparation

Voici le code de notre exemple :

pack [menubutton .r -image imenu -text "menu" -compound left -menu .r.fs -relief raised] -side left
menu .r.fs. -tearoff 0
.r.fs add command -label "Add new scenario" -image iadd -compound left -command Click_Add_Scenario
.r.fs add command -label "Modify selected scenario" -image iedit -compound left -command Click_Edit_Scenario
.r.fs add command -label "Delete selected scenario" -image idel -compound left -command Click_Delete_Scenario
.r.fs add separator
.r.fs add command -label "Help me..." -image ihelp -compound left
.r.fs add separator
.r.fs add command -label "Quit and close designer" -image iquit -compound left -command {destroy .}

B) Création du menubutton.

Nous créons le menubutton par la commande :

menubutton .r


Pour lui attribuer une image et un texte (ici une icone MENU et un texte "MENU") , il faut lui passer deux options :

menubutton .r -image imenu -text "menu" -compound left


N'oubliez pas l'option compound qui demande d'afficher à la fois le texte et l'image.

C) Création d'un menu répondant au clic su bouton

Il nous suffit d'utiliser la même méthode qu'un menu traditionnel comme ceci :

menu .r.fs. -tearoff 0
.r.fs add command -label "Add new scenario" -image iadd -compound left

Notez au passage que l'option tearoff permet de ne pas afficher une ligne pointillée en haut du menu pour le rendre détachable.

D) Créer un séparateur

Pour une ligne horizontale dans le menu, utilisez la commande separator comme ceci :

.r.fs add separator

E) Evênement  clic de souris.

Enfin, pour réagir à un clic de souris gauche, il vous suffit d'utiliser l'option -command qui déclenchera la procédure qui suit cette commande comme ceci :

-command Click_Delete_Scenario

Merci pour votre attention.