10. Expander

Os expansores permitem ocultar ou mostrar informações dinamicamente em uma janela ou caixa de diálogo. Um expansor pode conter um único widget que será exibido quando expandido.

Os expansores permanecem expandidos até serem clicados novamente. Quando o estado de um expansor é alterado, o sinal “activate” é emitido.

Um expansor pode ser expandido ou recolhido programaticamente passando True ou False para Gtk.Expander.set_expanded(). Observe que isso faz com que o sinal “activate” seja emitido.

Mais de um widget, como Gtk.Label e Gtk.Button, pode ser adicionado anexando-os a Gtk.Box.

10.1. Exemplo

_images/expander_example.png
 1import gi
 2
 3gi.require_version("Gtk", "3.0")
 4from gi.repository import Gtk
 5
 6
 7class ExpanderExample(Gtk.Window):
 8    def __init__(self):
 9        super().__init__(title="Expander Demo")
10
11        self.set_size_request(350, 100)
12
13        vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
14        self.add(vbox)
15
16        text_expander = Gtk.Expander(
17                label="This expander displays additional information"
18        )
19        text_expander.set_expanded(True)
20        vbox.add(text_expander)
21
22        msg = """
23This message is quite long, complicated even:
24    - It has a list with a sublist:
25        - of 3 elements;
26        - taking several lines;
27        - with indentation.
28"""
29        details = Gtk.Label(label=msg)
30        text_expander.add(details)
31
32        widget_expander = Gtk.Expander(label="Expand for more controls")
33        vbox.add(widget_expander)
34
35        expander_hbox = Gtk.HBox()
36        widget_expander.add(expander_hbox)
37
38        expander_hbox.add(Gtk.Label(label="Text message"))
39        expander_hbox.add(Gtk.Button(label="Click me"))
40
41        self.show_all()
42
43
44win = ExpanderExample()
45win.connect("destroy", Gtk.main_quit)
46win.show_all()
47Gtk.main()