BUTTON
Le bouton est un élément essentiel de l'interface graphique.Il vous permet de cliquer pour valider, accepter, changer un état, etc...
Il peut contenir un texte, un texte et une image, et peut prendre trois états:
relaché, cliqué, tristate.
Je vous propose, au travers de ces différents tutoriels , à utiliser ce widget.
CREATION D'UN BOUTON
Dans ce petit exemple de code nous allons voir comment créer un bouton, et changer son texte lors d'un clic gauche de la souris sur celui-ci.
Voici le code de l'exemple :
button .b1 -text "cliquez moi" -command {.b1 configure -text "hello"} button .b2 -text "Quit" -command {destroy .} pack .b1 .b2 -side left
Commentons la première ligne :
button : Demande la création d'un bouton
.b1 : Nom donné à ce bouton
-text : "cliquez moi" : Texte affiché sur le bouton
-command{...} : Lance une commande lors d'un clic sur le bouton gauche de la souris sur le bouton.
Notons au passage que nous aurions pu écrire ce code qui produit exactement le même résultat :
button .b1 -text "cliquez moi" -command {change .b1} button .b2 -text "Quit" -command {destroy .} pack .b1 .b2 -side left
proc change {widget} { $widget configure -text "hello" }
Nous avons créé une procédure nommée change que nous lançons avec un paramètre.
La deuxième ligne lance la commande destroy qui détruit la fenêtre nommée . , c'est à dire la fenêtre principale.
Disposition de boutons à la façon d'un menu en bas d'une fenêtre
Dans ce petit exemple nous allons nous intéresser à comment disposer deux boutons en bas à droite. Nous allons utiliser une Frame et deux boutons et le PACK manager pour les organiser. Les boutons ne réagissent à aucun clic, car ce n'est pas le but de cet exemple.
Voici le code de notre exemple :
frame .fr pack .fr -fill both -expand 1 frame .fr.pnl -relief raised -borderwidth 1 pack .fr.pnl -fill both -expand 1 button .fr.cb -text "Fermer" pack .fr.cb -padx 5 -pady 5 -side right button .fr.ok -text "OK" pack .fr.ok -side right wm geometry . 350x300+300+300
A retenir :
Merci à Jan Bodnar Zetcode pour cet exemple.
Button et entry tutoriel 03
1-) INTRODUCTION
Aujourd'hui ce tutoriel aura 4 grands principes de la bibliothèque tk à savoir :
A) L'utilisation d'une Entry (boite de saisie de texte)
B) L'évènement 'Clic gauche' d'un bouton.
C) La création et l"exécution d'une procédure.
D) Utilisation du pack manager pour organiser la fenêtre.
2-) CAHIER DES CHARGES
Je souhaite réaliser une application avec une boite de saisie et un bouton, le tout dans une fenêtre.
Je saisie dans la boite de texte monprénom et en cliquant sur le bouton, notre programme va afficher dans la boite de saisie :
"Bonjour monprénom".
3-) REALISATION PRATIQUE
a) Je crée d'abord un label dans lequel je renseigne le texte : "Saisissez votre nom:"
par cette ligne de commande :
label .lab -text "Saisissez votre nom:"
b) je crée une boite de saisie de texte (appelée ENTRY) comme ceci :
entry .ent
c) Je crée mon bouton comme ceci :
button .but -text "Cliquez moi" -command "push_button"
Si j'exécute mon application maintenant, rien ne se passe. Pourquoi? Tout simplement car je n'ai pas dit à tcltk comment organiser mes éléments d'interface (bouton, entry,label).
d) j'organise les éléments en demandant leur affichage par la commande pack comme ceci:
pack .lab pack .ent pack .but
e) Mon interface étant maintenant terminée, il faut que je m'occupe du clic sur le bouton. Dans le petit c, l'option
-command "push_button"
est importante. Elle veut simplement dire quand je clique gauche sur le bouton, exécute la procédure push_button.
f) Créons la procédure comme ceci :
proc push_button {} { .ent insert 0 "Bonjour " }
Pour détailler l'ensemble de cette procédure
proc : défini qu'il s'agit d'une procédure.
{} : crochets vides dans lequel nous pourrions passer des paramètres.
{ : Ouverture du code de la procédure
.ent insert 0 "Bonjour " : Insère à l'emplacement 0, c'est à dire au début de l'entry nommée .ent le mot "Bonjour "
4-) CONCLUSION
Voici le code complet de l'application, ce tutoriel aide à la compréhension du petit bout de code proposé par Binny V A que je remercie.
Voici le comde complet de l'application :
proc push_button {} { .ent insert 0 "Bonjour " } label .lab -text "Saisissez votre nom:" entry .ent button .but -text "Cliquez moi" -command "push_button" pack .lab pack .ent pack .but
5- FICHIER SOURCE A TELECHARGER
Voici le fichier source de cette application.
Voilà pour aujourd'hui, merci pour votre attention.
;-)
recuperer les attributs d'un widget
Ajourd'hui un excellent tutoriel pour récupérer tous les attributs d'un widget. Pour notre exemple, nous allons créer un bouton 'Hello' qui, lors d'un clic affichera dans le terminal tous les attributs de notre bouton.
Voici le code pour créer et afficher le bouton:
button .b -text "hello" -command {Widget_Attributes .b} pack .b
Lors d'un clic de ce bouton nous exécutons la procédure Widget_Attributes comme ci-dessous :
proc Widget_Attributes {w {out stdout}} { puts $out [format "%-20s %-10s %s" Attribute Default Value] foreach item [$w configure] {puts $out [format "%-20s %-10s %s" [lindex $item 0] [lindex $item 3] [lindex $item 4]]} }
Ce qu'il faut retenir de cet exemple :
Voici le résultat de la console après exécution de ce code :
Attribute Default Value -activebackground #ececec #ececec -activeforeground #000000 #000000 -anchor center center -background #d9d9d9 #d9d9d9 -bd -bg -bitmap -borderwidth 1 1 -command Widget_Attributes .b -compound none none -cursor -default disabled disabled -disabledforeground #a3a3a3 #a3a3a3 -fg -font TkDefaultFont TkDefaultFont -foreground #000000 #000000 -height 0 0 -highlightbackground #d9d9d9 #d9d9d9 -highlightcolor #000000 #000000 -highlightthickness 1 1 -image -justify center center -overrelief -padx 3m 3m -pady 1m 1m -relief raised raised -repeatdelay 0 0 -repeatinterval 0 0 -state normal active -takefocus -text hello -textvariable -underline -1 -1 -width 0 0 -wraplength 0 0
Voici le code complet de l'exemple:
proc Widget_Attributes {w {out stdout}} { puts $out [format "%-20s %-10s %s" Attribute Default Value] foreach item [$w configure] {puts $out [format "%-20s %-10s %s" [lindex $item 0] [lindex $item 3] [lindex $item 4]]} } button .b -text "hello" -command {Widget_Attributes .b} pack .b
Merci pour votre attention.