LES CHOOSERS ou FENÊTRES DE SELECTION

Les Chooser sont des boites de dialogue vous permettant de choisir ou de sauvegarder :

  • Des Fichiers
  • Des répertoires
  • Des couleurs
  • Des polices de caractères

Les voici détaillées dans cette page :

#1- FOLDER CHOOSER ou sélection de répertoire

Le FolderChooser vous permet de récupérer le nom d'un répertoire à l'aide d'une boite de dialogue.

Appelez la fenêtre par la commande tk_chooseDirectory  et récupérez le chemin complet dans une variable.

Voici le code de l'exemple :

wm  title . "selectionner un repertoire"
button .v -text "selectionner" -command {monrep}
pack .v

proc monrep {} {
set dir [tk_chooseDirectory -initialdir ~ -title "Répertoire pour le projet TK"]
if {$dir eq ""} {
   label .v.l -text "No directory selected"
} else {
   label .v.l -text "Selected $dir"
}
pack .v.l
}

Le résultat sera présent dans la variable $dir

 

#2- FILE CHOOSER ou sélecteur de fichier

Le FileChooser est une boite de dialogue vous permettant de sélectionner ou sauvegarder un fichier.

Vous pouvez définir le type de fichier par un filtre (voir exemple)

Vous appelez la fenêtre par tk_getOpenFile et vous récupérez le chemin complet de votre fichier dans une variable.

Voici un simple code pour son utilisation:

set types {
    {"All Source Files"     {.tcl .tk } }
    {"Image Files"          {.gif .png .jpg} }
    {"All files"            *}
}

proc onSelect { label } {
    global types   
    set file [tk_getOpenFile -filetypes $types -parent .]
    $label configure -text $file
}

label .l -text "..."
place .l -x 20 -y 90
button .b -text "Select a file" \
        -command "onSelect .l"
place .b -x 20 -y 30
wm title . "openfile" 
wm geometry . 350x200+300+300

Le chemin sera dans la variable $file

 

#3- COLOR CHOOSER ou sélection de couleur

Le ColorChooser vous permet de choisir une couleur pour l'utiliser dans votre programme.

Son utilisation est très simple :

Vous l'appelez par la commande tk_chooseColor et vous récupérez la valeur de la couleur dans une variable.

Voici le code pour son utilisation :

proc doIt {widget} {
    set current_color [tk_chooseColor -title "Choose a background color" -parent .]
    $widget configure -background $current_color
}

label .l
button .b -text "Choose a color..." -command {doIt .b}
grid .b -row 0 -column 0

Dans cet exemple nous avons un simple bouton qui, lors d'un clic, ouvre la boite colorchooser et récupère dans la variable current_color la valeur de la couleur choisie et l'applique en fond du bouton.

Notez au passage que l'underscore "_" est toléré dans le nom d'une variable.

#4- color chooser personnelle boite de selection de couleur


 

J'ai fait une boite de selection de couleur personnelle au style gtk4.

Selectionnez parmis la palette usuelle, et si vous le souhaitez, vous pouvez personnaliser une couleur.

Lors d'un clic sur une couleur ou sur la couleur personnalisee, la couleur est renvoyee immediatement et la fenetre se ferme.

Pour l'utiliser, telechargez le fichier colorchooser.tk et mettez le dans votre dossier de l'application.

 TELECHARGER LE ZIP a decompresser dans le repertoire de votre application

 

Ensuite, il suffit d'ajouter au debut de votre script la phrase suivante :

source colorchooser.tk

Voici un exemple de code pour appeler la fenetre et recuperer la valeur de la couleur dans la variable mycolor :

button .b -text "get color " -command {set mycolor [Choose_Color] ; puts $mycolor}
pack .b

 Remarque : Une notion interessante que je n'ai jamais trouve sur le net :

Une boite de selection bloque le logiciel en attendant de faire une selection, puis lui redonne la main tout en fermant la boite de dialogue.

Cette action est faite par le code suivant :

# For ::tk::SetFocusGrab and ::tk::RestoreFocusGrab see Tk library file tk.tcl
::tk::SetFocusGrab $w ""
vwait Dialog_Color
set result $Dialog_Color
::tk::RestoreFocusGrab $w ""	;# side effect: destroys $w

Un immense merci a Csaba pour son aide.