Vous êtes à peu près ici : Accueil  »   tutoriel PyGTK  »   PyGTK : sommaire

16.5. Expanseur (Expander)

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.

Figure 16.11. Expander Widget

Exemple d'expanseur.

Ce programme crée un Label contenant le temps courant et l'affiche quand l'expanseur est ouvert.