LE LABEL

Le label ajoute su texte explicatif à votre interface pour la rendre plus lisible.

Le label en Tk peut combiner image et texte sous diverses orientations (droite, gauche, bas, haut)

Voici des tutoriels sur le label:

Cration d'un Label et insertion d'une image

Dans cet exemple nous allons afficher un texte dans un label.

Ce qu'il est très important de noter, c'est que le label peut aussi afficher une image dans n'importe quelle direction (au dessu, au dessous, à gauche, à droite du texte) Pour ce faire il ne faut pas oublier l'option COMPOUND. (voir cet exemple

Voici le code de l'application que nous allons commenter après :

frame .fr
pack .fr
image create photo img -file "ecrou.jpg"
label .fr.lbl -image img
pack .fr.lbl

wm title . label
wm geometry . +300+300

Tout d'abord créons une image par la commande IMAGE CREATE. la photo sera stockée dans la variable IMG

Ensuite créons un label dont l'image sera IMG

Comme je vous le disais, pour afficher un texte et une image en même temps, voici le code qu'il faut écrire

image create photo img -file "stock.png"
label .fr.lbl -image img -text "c'est mon écrou!" -compound top

...et voici le résultat :

compound peut prendre 4 valeurs : TOP, BOTTOM, LEFT ou RIGHT.

 

REDIMENSIONNER UNE IMAGE A LA VOLEE

J'ai cherché un moment une procédure me permettant de redimensionner à la volée une image en l'agrandissant ou la réduisant mais je n'ai pas trouvé ce que je cherchais.

J'ai donc réalisé cette procédure moi même.

1) Creation de la procédure en lui passant les paramètres.

Je voudrais recevoir de ma nouvelle procédure nommée resizeIMG une image redimensionnée.

Je souhaite aussi lors de son exécution lui passer :

  • L'image à redimensionner ici myimg
  • La taille à redimensionner en X en pixels ici wi
  • La taille à redimensionner en Y en pixels ici he

Pour des raisons de simplification, il est compliqué de connaître par le code en tcl tk la taille d'une image. Nous partirons du postulat que nous redimensionnons une image qui a des dimensions de 128x128 au format PNG.

Voici le code de la procédure que nous allons commenter :

 proc resizeIMG { myimg wi he } {
	 set factor [expr 128 / $wi]
	set Imodified [image create photo -width $wi -height $he]
    $Imodified copy $myimg -to 0 0 $wi $he -subsample $factor
     return $Imodified
 }

Commentons ce code :

  • Définissons une variable factor qui sera le facteur de zoom de notre image.
  • Définisson une variable Imodified qui sera une image aux nouvelles dimensions.

La ligne la plus intéressante est la suivante :

$Imodified copy $myimg -to 0 0 $wi $he -subsample $factor

 

 

 

 

 

 

.