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.