Le scale est un curseur de réglage pour définir une valeur dans votre programme. Il est très facile d'utilisation.
Les options les plus courantes sont :
Voici donc comment l'utiliser :
creer et afficher un scale
A son plus simple élément voici le code pour créer un scale :
scale .s pack .s
Afficher un texte ou label sur le scale
Vous pouvez ajouter un label de description avec l'option label comme ceci :
scale .scl -label "Age :"
definir une valeur dans le code
Si sa valeur est stockée dans la variable age, il suffit simple d'écrire :
set age 25
Choisir l'orientation du scale
Pour un scale horizontal :
scale .scl -label "Age :" -orient h
Pour un scale vertical :
scale .scl -label "Age :" -orient v
definir une echelle de reglage / afficher la valeur
Pour définir une échelle de 10 à 50 par exemple voici le code :
scale .scl -orient h -from 10 -to 50
La valeur ainsi réglée se balladera entre les limites basse et haute.
Il est possible d'affichier la valeur directement sur le widget par l'option showvalue :
scale .scl -orient h -from 10 -to 50 -showvalue 1
showvalue peut prendre deux états : 0 ou 1 pour non visible et visible.
Enfin pour changer le nombre de digit de la valeur utiliser l'option digit :
scale .scl -orient h -from 10 -to 50 -digit 3
vous affichera :
J'exagère pour que vous compreniez, j'affiche 6 digits :
scale .scl -orient h -from 10 -to 50 -digit 6
recuperer la valeur du scale et l'utiliser dans votre programme
La valeur de votre scale sera stocké dans l'otion variable comme ceci :
scale .scl -variable age
ainsi vous pourrez connaitre la valeur du scale par la commande :
puts $age
Il faut savoir que la valeur modifiée du scale sera présente dans la variable tout au long du déroulement de votre logiciel. Je veux dire par là que nous n'avons pas besoin d'évènement sur le widget pour faire varier sa valeur.
modifier la graduation
Dans notre exemple la graduation est la barre de chiffres de 10 à 50.
Pour la modifier utiliser l'option tickinterval
scale .scl -label "Age :" from 10 -to 50 -variable age -tickinterval 10
Ne définissez pas une intervale trop petite sans quoi la graduation ne sera pas du tout parlante.
exemple : si vous mettez 3 voici le résultat :
deplacer le curseur avec les touches fleches sur votre clavier
Il suffit simplement de lui donner le focus avec cette commande :
focus .scl
Par contre cela affichera un cadre autour du widget comme ceci :
Un petit exemple concret pour resumer
Voici un petit exemple qui va nous permettre de changer le texte d'un label en bougeant la valeur de notre Scale.
Voici le code de l'application:
frame .fr pack .fr -fill both -expand 1 scale .fr.scl -orient horizontal -from 0 -to 100 -length 150 -variable val -showvalue 0 place .fr.scl -x 50 -y 50 label .fr.lbl -textvariable val place .fr.lbl -x 80 -y 110 wm title . "Exemple de Scale" wm geometry . 350x250+300+300
Ce code est très simple. Vous l'aurez vite compris, la valeur du scale se trouve dans la variable VAL qui est la même que celle du label.
N'oubliez pas dans votre application de définir la variable comme globale si vous voulez utiliser la valeur du scale dans les procédures privées.