10. Expander¶
Expanders allow to dynamically hide or show information within a window or dialog. An expander can take a single widget that will be displayed when expanded.
Expanders remain expanded until clicked again. When the state of an expander is changed, the “activate” signal is emitted.
An expander can be programmatically expanded or collapsed by passing True or
False to Gtk.Expander.set_expanded()
. Note that doing so causes the
“activate” signal to be emitted.
More than one widget, such as a Gtk.Label
and Gtk.Button
,
can be added by appending them to a Gtk.Box
.
10.1. Example¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
class ExpanderExample(Gtk.Window):
def __init__(self):
super().__init__(title="Expander Demo")
self.set_size_request(350, 100)
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
self.add(vbox)
text_expander = Gtk.Expander(
label="This expander displays additional information"
)
text_expander.set_expanded(True)
vbox.add(text_expander)
msg = """
This message is quite long, complicated even:
- It has a list with a sublist:
- of 3 elements;
- taking several lines;
- with indentation.
"""
details = Gtk.Label(label=msg)
text_expander.add(details)
widget_expander = Gtk.Expander(label="Expand for more controls")
vbox.add(widget_expander)
expander_hbox = Gtk.HBox()
widget_expander.add(expander_hbox)
expander_hbox.add(Gtk.Label(label="Text message"))
expander_hbox.add(Gtk.Button(label="Click me"))
self.show_all()
win = ExpanderExample()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()
|