Le widget label permet d'afficher du texte.
label .lb1 -text "Bonjour"
label .lb2 -textvariable nom
pack .lb1 .lb2 -side left
set nom yves
pack [entry .ent -textvariable ma_var]L'option -textvariable permet de récupérer dans une variable le texte saisi dans ce widget.
Un exemple de menu:
menu .menu
menu .menu.fichier -tearoff 0
.menu add cascade -label "Fichier" -menu .menu.fichier
# Quitter le script:
.menu.fichier add command -label "Quit" -accelerator "Control-q" -command {exit}
menu .menu.cascade -tearoff 0
.menu add cascade -label "Cascade" -menu .menu.cascade
# Menu en cascade:
menu .menu.cascade.titre -tearoff 0
.menu.cascade add cascade -label "Titre" -menu .menu.cascade.titre
# menu qui change le titre de la fenêtre:
.menu.cascade.titre add command -label "menu demo" -command {wm title . "menu demo"}
.menu.cascade.titre add command -label "test" -command {wm title . "test"}
menu .menu.cascade.color
.menu.cascade add cascade -label "Couleur" -menu .menu.cascade.color
# Menu pour changer la couleur de widget et menu:
.menu.cascade.color add command -label "bleu" -command {tk_setPalette blue}
.menu.cascade.color add command -label "rouge" -command {tk_setPalette red}
. configure -menu .menu
Quelques options:
menubutton .mb1 -text "Fichier" -menu .mb1.m -relief raised
menubutton .mb2 -text "Cascade" -menu .mb2.m -relief raised
menu .mb1.m -tearoff 0
.mb1.m add command -label "Quitter" -command exit
menu .mb2.m -tearoff 0
menu .mb2.m.titre -tearoff 0
.mb2.m add cascade -label "Titre" -menu .mb2.m.titre
.mb2.m.titre add command -label "Menu boutton" -command {wm title . "Menu Boutton"}
.mb2.m.titre add command -label "test" -command {wm title . "test"}
menu .mb2.m.color
.mb2.m add cascade -label "Couleur" -menu .mb2.m.color
.mb2.m.color add command -label "rouge" -command {tk_setPalette red}
.mb2.m.color add command -label "bleu" -command {tk_setPalette blue}
pack .mb1 .mb2 -side left -padx 4 -pady 4
On crée d'abord les menubouton, puis on crée des menus à l'intérieur de ceux ci.
canvas .canv -width 100 -height 100 pack .canv .canv create rectangle 2 2 99 99 -fill white -outline blue .canv create line 10 30 30 80 -fill red -width 2 .canv create oval 30 10 60 30 -fill yellow -outline cyan .canv create polygon 40 40 55 50 70 40 60 55 70 70 55 60 40 70 50 55 -fill greenPour voir d'autres exemples avec des canvas cliquez ici.
# Selection d'un fichier image:
set types {
{{gif} {.gif} }
{{jpeg} {.jpg} }
}
set fichier [tk_getOpenFile -filetypes $types -parent .]
image create photo img1 -file $fichier
label .la -image img1
pack .la
Ce sont des cases à cocher.
set val 1 checkbutton .chk1 -textvariable val -variable val grid .chk1
Un radiobutton ressemble un peu a un checkbutton, à la différence près
que l'on peut associer plusieurs radiobutton à une même variable et définir
pour chacun d'entre eux la valeur qui sera affecté à la variable lorsque celui-ci sera coché.
set myvar 1 radiobutton .r1 -text "1" -state normal -variable myvar -value "1" radiobutton .r2 -text "2" -variable myvar -value "2" radiobutton .r3 -text "3" -state normal -variable myvar -value "3" grid .r1 grid .r2 grid .r3 label .la -text "Choix:" label .laff -textvariable myvar grid .la .laff
frame .f1 button .f1.b1 -text "Quitter" -command exit button .f1.b2 -text "bouton 2" button .f1.b3 -text "bouton 3" pack .f1.b1 .f1.b2 .f1.b3 -side left -padx 4 label .lab -width 30 -fg red -bg white -text " Ceci est un label rouge sur fond blanc " pack .f1 .lab -pady 2On peut aussi s'en servir pour créer une barre d'outils que l'on affiche (pack) ou masque (pack forget) suivant le besoin.
# Barre d'outils
frame .toolbar
button .toolbar.b1 -text "bouton 1" -command {.txt insert end "1 \n"}
button .toolbar.b2 -text "bouton 2" -command {.txt insert end "2 \n"}
button .toolbar.b3 -text "bouton 3" -command {.txt insert end "3 \n"}
pack .toolbar.b1 .toolbar.b2 .toolbar.b3 -side left -padx 4
text .txt -width 30 -height 10
pack .toolbar .txt -pady 2
set aff 1
. configure -menu .menu
menu .menu
menu .menu.aff -tearoff 0
.menu add cascade -label "Affichage" -menu .menu.aff
.menu.aff add check -label "toolbar" -command {afftoolbar} -variable aff
# Affiche ou cache la barre d'outils
proc afftoolbar {} {
global aff
if {$aff} {
pack .toolbar.b1 .toolbar.b2 .toolbar.b3 -side left -padx 4
} else {
pack forget .toolbar.b1 .toolbar.b2 .toolbar.b3; .toolbar configure -height 1
}
}
listbox .listb
set select ""
label .lab -textvariable select
pack .listb .lab
# Insertion des éléments:
.listb insert end "gray" "blue" "red" "yellow" "green" \
"cyan" "seashell2" "ivory" "skyblue" "gold"
# évênement lors d'un double click dans la liste:
bind .listb <Double-1> {set select [selection get]; .listb configure -bg $select}
Explications:
tk_messageBox -icon warning -type ok -message "Ce programme ne sert strictement à rien" -title "Avertissement"
switch [tk_messageBox -icon question -type yesno -message "Quitter" -title "MessageBox"] {
yes exit
no { tk_messageBox -icon info -type ok -message "On continu !" -title "MessageBox" }
}
set i 1
while {[tk_messageBox -icon error -type retrycancel -message "Erreur $i" -title "OUPS !"]=="retry"} {incr i}
exit
Les principales options sont:
set types {
{{fichiers tcl} {.tcl} }
{{fichiers textes} {.txt} }
{{All Files} * }
}
set fichier [tk_getOpenFile -title "Sélectionnez le fichier a ouvrir" -initialdir "./" -filetypes $types]
tk_getOpenFile retourne le chemin du fichier sélectionné.
set types {
{{fichiers tcl} {.tcl} }
{{All Files} * }
}
set fichier [tk_getSaveFile -title "Enregistrer sous:" -initialdir "./" -filetypes $types]
set dir [tk_chooseDirectory -title "choisissez un répertoire" -initialdir "./"]
set c grey
button .coul -text "Couleur" -bg $c -command {
set c [tk_chooseColor -initialcolor $c ]
.coul configure -bg $c
}
grid .coul
L'appui sur le bouton .coul ouvre une fenêtre de sélection de couleur,
puis change la couleur de fond du bouton en celle qui à été choisie.
wm geometry . 200x100 panedwindow .pane -orient horizontal pack .pane -side top -expand yes -fill both label .pane.left -text "Coté gauche" -bg yellow label .pane.right -text "Coté droit" -bg white .pane add .pane.left .pane.rightL'option -orient (horizontal ou vertical) permet de définir le sens (horizontal ou vertical) de séparation de la fenêtre.