Tk par l'exemple - Afficher une image

 

Afficher une image dans un label

  set bmp [image create bitmap question]
  label .l -bitmap $bmp
  grid .l

La première ligne crée une image de type bitmap et copie son nom dans la variable bmp (la bitmap est connue de Tk et se nomme question).

Les deux dernière lignes affichent la bitmap dans un label.


Les images de Tk

Tk sait afficher deux types d'images :


Les images bitmap

Ce sont des images d'une seule couleur sur un fond d'une autre couleur et qui peut comporter des parties transparentes.

Tk connait un certain nombre d'images bitmap (liste pour Tk 8.5) :

Les images correspondantes sont créées par les commandes :

  set name "question"
  set bmp [image create bitmap $name]
  label .l -bitmap $bmp
  grid .l

Il est possible de préciser une couleur d'arrière-plan (-background) et une couleur d'avant-plan (-foreground) :

  set bmp [image create bitmap $name -foreground red -background green]

Il est possible de créer une bitmap à partir d'un fichier bitmap :

  # télécharger le fichier image : http://wfr.tcl.tk/fichiers/images/ulis/question.xbm
  set fichier "question.xbm"
  set bmp [image create bitmap @$fichier]
  label .l -bitmap $bmp
  grid .l

Attention : le fichier doit contenir une bitmap de X-Window (image UNIX) et non une bitmap de Windows (MS Windows).

(pour plus de détail voir Tk avancé - Créer une bitmap)

Elles sont utilisables par les widgets qui ont une option -bitmap :

Tous ces widgets acceptent aussi comme valeur de bitmap un des noms connus de Tk :

  label .l -bitmap question
  grid .l

Dans ce cas les options -background et -foreground s'appliquent à la bitmap :

  label .l -bitmap question -foreground red -background green
  grid .l

Ces widgets acceptent aussi les noms de fichiers :

  label .l -bitmap @question.xbm
  grid .l

Attention : Les widgets ayant l'option -bitmap ont aussi une option -image qui accepte toute image créée par [image create ...] mais dans ce cas une image de type bitmap n'est pas affichée.

Avec l'option -bitmap l'image bitmap est affichée :

  set name "question"
  set bmp [image create bitmap $name]
  label .l -bitmap $bmp
  grid .l

Avec l'option -image l'image bitmap n'est pas affichée :

  set name "question"
  set bmp [image create bitmap $name]
  label .l -image $bmp
  grid .l

L'option -image est destinée à afficher des images de type photo.


Les images photo

Ce sont des images en vraies couleurs avec des parties transparentes.

Tk connait les formats :

L'extension Img y ajoute les formats :

Pour utiliser Img (si l'extension est installée) il suffit de rajouter en début du script :

  package require Img

Aujourd'hui (2007) les formats les plus utilisés (surtout sur Internet) sont gif, jpeg et png.

Création d'une image photo à partir d'un fichier

  # téléchargez le fichier : http://wfr.tcl.tk/fichiers/images/ulis/pavage.gif
  # ou remplacez le nom du fichier par un des votres
  set photo [image create photo -file pavage.gif]
  label .l -image $photo
  grid .l

Création d'une image sans fichier

Une image photo, au moyen de l'opération data, sait restituer ses pixels sous forme d'une liste de lignes de pixels :

  set photo [image create photo -file pavage.gif]
  set pixels [$photo data]
  puts [join $data \n]

%

  #e9e9ec #f6f6eb #e9e9ec ...
  #d7d7f9 #e9e9ec #ecf2eb ...
  #a578fa #e5d9ec #fbfafb ...
  ...

Réciproquement elle accepte ces données au moyen de l'opération put

  set pixels \
  {
    {#fff #fff #888 #fff #fff}
    {#fff #888 #888 #888 #fff}
    {#888 #888 #888 #888 #888}
  }
  set photo [image create photo]
  $photo put $pixels
  label .l -image $photo
  grid .l -padx 10 -pady 10

Attention : Ce format (nommé raw) n'est pas accepté par l'option -data de la commande image.


Afficher une image dans un canvas

  set photo [image create photo -file pavage.gif]
  set width [image width $photo]
  set height [image height $photo]
  canvas .c -borderwidth 0 -highlightthickness 0 \
    -width $width -height $height
  .c create image 0 0 -anchor nw -image $photo
  grid .c

Les opérations width et height de la commande image permettent de récupérer les dimensions de l'image.

L'opération create image de la commande canvas crée une image qui s'affiche dans le widget.

Remarque : Pour afficher juste sur le bord d'un widget canvas il faut donner la valeur 0 aux deux options -borderwidth et -highlightthickness.


Voir Aussi


Catégorie Cours | Catégorie Encyclopédie Tk