widgets non rectangulaires

 

dc 16/06/08

Voici un petit exemple de widget 'label' non rectangulaire. L'idée est de prendre un widget, lui appliquer une image, puis de découper ce widget en suivant la forme de l'image (en supposant que le fond de l'image soit transparent) avec le package [shape]. C'est tout, le tour est joué !

Dans l'exemple (ci-dessous), on construit deux boutons le premier enveloppe le deuxième, quand on appuie sur la forme noire, il s'agit du bouton .l, la forme rouge est le bouton .m

La forme noire image1.png est ici : http://dcobac.free.fr/tcl/wfr/images/image1.png

La forme rouge image2.png est ici : http://dcobac.free.fr/tcl/wfr/images/image2.png

 package require Tk
 package require pixane
 package require shape

 for {set j 1} {$j<=2} {incr j} {
    set i($j) [image create photo]
    set p($j) [pixane create -tkphoto $i($j)]
    pixane load $p($j) -file ~/image$j.png
 }

 button .l -image $i(1) -command [list tk_messageBox -message "Je suis .l !"]
 button .m -image $i(2) -command [list tk_messageBox -message "Je suis .m !"]

 shape set .l photo $i(1)
 shape set .m photo $i(2)

 place .l -x 0 -y 0
 place .m -x 0 -y 0

Remarque C'est vrai que j'aurais pu construire les images directement avec Pixane.... la prochaine fois....