L'expanseur (Expander
) est un conteneur
assez simple qui peut montrer ou cacher son widget fils en cliquant sur
un triangle semblable au triangle du TreeView
. On
crée un Expander
par le constructeur :
expander = gtk.Expander(label
=None)
... où le paramètre label
est une chaîne de caractères
utilisée comme étiquette de l'expanseur. Si label
vaut
None
ou n'est pas défini, aucune étiquette ne sera créée.
D'une autre manière, on peut utiliser la fonction :
expander = gtk.expander_new_with_mnemonic(label
=None)
... qui définit le caractère de l'étiquette précédé par un trait de soulignement comme un raccourci-clavier.
Le widget Expander
utilise l'API de
Container
pour ajouter ou retirer son widget fils :
expander.add(widget
) expander.remove(widget
)
Le widget fils peut être récupéré en utilisant l'attribut
"child" de Bin
ou par la méthode
get_child
().
L'option qui contrôle l'interprétation des caractères soulignés de l'étiquette peut être récupérée et modifiée par ces méthodes :
use_underline = expander.get_use_underline() expander.set_use_underline(use_underline)
Si on souhaite utiliser le marquage Pango (voir les détails dans Référence du marquage Pango) dans le libellé de l'étiquette, il faut utiliser les méthodes suivantes pour récupérer et définir l'état de la propriété "use-markup" :
expander.set_use_markup(use_markup
)
use_markup = expander.get_use_markup()
Enfin, on peut utiliser n'importe quel widget comme label en utilisant la méthode suivante :
expander.set_label_widget(label_widget
)
Ceci permet, par exemple, d'utiliser une boîte HBox
contenant une Image
et un Label
comme étiquette du Expander
.
L'état du Expander
peut être récupéré et défini par
ces méthodes :
expanded = expander.get_expanded()
expander.set_expanded(expanded
)
Si le paramètre expanded
vaut TRUE
,
le widget fils est affiché.
Dans la plupart des cas, le Expander
effectue
automatiquement ce que l'on veut lorqu'il affiche ou cache le widget fils.
Parfois, l'application peut vouloir créer un widget fils au moment de l'expansion.
Le signal "notify::expanded" peut être utilisé pour garder trace des changement d'état
du triangle d'expansion. Le gestionnaire de signal peut alors créer ou modidier
le widget fils en fonction des besoins.
Le programme d'exemple
expander.py illustre
l'utilisation du Expander
. La
Figure 16.11, « Expander Widget » montre le programme en cours
d'exécution.
Ce programme crée un Label
contenant le temps courant et
l'affiche quand l'expanseur est ouvert.