Switch - PyGObject

Hide navigation sidebar
Hide table of contents sidebar
Skip to content
Back to top
View this page
Edit this page
Toggle table of contents sidebar

# Switch

A `Gtk.Switch` is a widget that has two states: on or off. The user can control which state should be active by clicking the empty area, or by dragging the handle.

You shouldn’t use the `activate` signal on the Gtk.Switch which is an action signal and emitting it causes the switch to animate. Applications should never connect to this signal, but use the `notify::active` signal, see the example here below.

## Example

     1import gi
     2
     3gi.require_version('Gtk', '4.0')
     4from gi.repository import Gtk
     5
     6
     7class SwitcherWindow(Gtk.ApplicationWindow):
     8    def __init__(self, **kargs):
     9        super().__init__(**kargs, title='Switch Demo')
    10
    11        hbox = Gtk.Box(spacing=6, homogeneous=True)
    12        hbox.props.margin_top = 24
    13        hbox.props.margin_bottom = 24
    14        self.set_child(hbox)
    15
    16        switch = Gtk.Switch()
    17        switch.connect('notify::active', self.on_switch_activated)
    18        switch.props.active = False
    19        switch.props.halign = Gtk.Align.CENTER
    20        hbox.append(switch)
    21
    22        switch = Gtk.Switch()
    23        switch.connect('notify::active', self.on_switch_activated)
    24        switch.props.active = True
    25        switch.props.halign = Gtk.Align.CENTER
    26        hbox.append(switch)
    27
    28    def on_switch_activated(self, switch, _gparam):
    29        if switch.props.active:
    30            state = 'on'
    31        else:
    32            state = 'off'
    33        print('Switch was turned', state)
    34
    35
    36def on_activate(app):
    37    win = SwitcherWindow(application=app)
    38    win.present()
    39
    40
    41app = Gtk.Application(application_id='com.example.App')
    42app.connect('activate', on_activate)
    43
    44app.run(None)