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.