LES FRAMES

Les Frames sont bien pratiques pour grouper des widgets ensemble pour réorganiser votre interface

Voici divers tutoriels :

EVENEMENT ENTER

Dans ce petit exemple nous allons créer une frame avec un fond rouge et lorsque la souris passe dessus le fond devient bleu et quand on ressort le fond redevient rouge.

Plaçons une fram comme ceci :

place [frame .f -width 100 -height 100 -bg red] -x 10 -y 10

Utilisons maintenant la commande BIND pour déclencher un évènement. L'évènement ENTER réagira lorsque la souris entre dans la surface de la Frame :

bind .f <Enter> {.f configure -bg blue}

Maintenant utilisons l'évènement LEAVE qui signifie lorsque l'on sort de la surface du frame :

bind .f <Leave> {.f configure -bg red}

Voici le code complet de cet exemple :

place [frame .f -width 100 -height 100 -bg red] -x 10 -y 10
bind .f <Enter> {.f configure -bg blue}
bind .f <Leave> {.f configure -bg red}

Effacer tous les widgets contenus dans une frame

Je crée une application dans laquelle il y a une frame qui contient 20 boutons.

Un autre bouton sert à enlever tous les boutons de cette frame. Comment faire?

1- Création de la frame et des 20 boutons.

Voici le code :

set mylist {b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15 b16 b17 b18 b19 b20}

#create frame with 20 buttons

pack [frame .f] -expand 1 -fill both

foreach mybutton $mylist {pack [button .f.$mybutton -text $mybutton] -side left}

# create one button to clear all frame

pack [button .bdel -text "delete all button in one time" -command {delall .f}]

2- procedure pour effacer (enlever) les boutons de la frame

Voici la procédure :

# Delete procedure

proc delall {frm} {
    destroy {*}[winfo children $frm]
}