El control Expander es un contenedor bastante simple que
permite mostrar u ocultar su control hijo haciendo clic en un triángulo similar al de un
TreeView. Se crean nuevos
Expander con el constructor:
expander = gtk.Expander(label=None)
donde label es una cadena de texto utilizada como etiqueta
del expansor. Si label es None
o no se especifica, no se crea ninguna etiqueta. Alternativamente, se puede usar la
función:
expander = gtk.expander_new_with_mnemonic(label=None)
que establece el carácter de la etiqueta precedido por un guión bajo como atajo de teclado mnemónico.
El control Expander usa la API de Container para añadir y eliminar su control hijo:
expander.add(widget) expander.remove(widget)
El control hijo se puede obtener utilizando el atributo de
Bin "child" o el método
get_child().
La opción que controla la interpretación de los guiones bajos de la etiqueta se puede obtener y cambiar con los métodos:
use_underline = expander.get_use_underline() expander.set_use_underline(use_underline)
Si se desea usar etiquetas de marcado de Pango (véase la Referencia de Marcas de Pango para más detalles) en la cadena de la etiqueta se usan los siguientes métodos para establecer y obtener el estado de la propiedad "use-markup":
expander.set_use_markup(use_markup)
use_markup = expander.get_use_markup()
Finalmente, se puede utilizar cualquier control como control de etiqueta utilizando el método siguiente:
expander.set_label_widget(label_widget)
Que permite, por ejemplo, poder utilizar una HBox empaquetada con una imagen y un texto de etiqueta.
Se puede obtener y establecer el estado del Expander utilizando los métodos:
expanded = expander.get_expanded()
expander.set_expanded(expanded)
Si expanded es TRUE entonces e muestra
el control hijo.
En la mayoría de los casos Expander hace automáticamente
lo que se desea, al revelar y ocultar el control hijo. En algunos casos la aplicación puede necesitar la creación de un control hijo en el momento de la expanción. Se puede usar la señal
"notify::expanded" para seguir los cambios en el estado de triángulo expansor. El manejador
de la señal puede entonces crear o modificar el control hijo según se necesite.
El programa de ejemplo expander.py muestra el uso de
Expander. Figura 16.11, “Control de Expansión” ilustra la ejecución
del programa:
El programa crea una etiqueta Label que contiene la hora
actual y la muestra cuando se expande el expansor.