Home > Gtk3, PyGObject, python > PyGObject: Gtk.Switch

PyGObject: Gtk.Switch

7 Gennaio 2020

torna all’indice degli appunti

Switch

Il widget Gtk.Switch è un widget che ha due stati: ON e OFF.
Fisicamente, si cambia lo stato dello switch, o cliccando sulla label scoperta del widget,
o trascinando la slitta dello switch.

Per creare un Switch si utilizza il costruttore Gtk.Switch(**kwargs),
dove l’argomento più significativo è “active”.
active: se True, lo switch sarà su ON, altrimenti su OFF (False);

Ovviamente è possibile settare i parametri del widget anche successivamente alla sua costruzione,
con i soliti metodi getter e setter get_property(property_name) e
set_property(property_name, property_value):

 
>>> import gi
... gi.require_version('Gtk', '3.0')
... from gi.repository import Gtk
... 
>>> switch = Gtk.Switch()
>>> switch.get_property("active")
False

oppure con i metodi getter e setter specifici get_*property_name*() e
set_*property_name*(value):

Le properties principali sono due:

Name Type Flags Short Description
active bool r/w/en Se lo switch è ON o OFF
state bool r/w/en lo stato di backend
 
>>> switch.set_active(True)
>>> switch.get_active()
True

Segnali

I segnali principali sono due:

Name Short Description
activate è un action-signal ovvero una volta emesso, causa lo spostamento della slitta del widget
state-set quando viene emesso, cambia lo stato principale del widget

Nota:
Non si dvrebbe mai connettere lo switch al segnale “activate”, che una volta emesso
(in altri ambiti), causerebbe lo spostamento della slitta del widget stesso.
E’ sempre bene connettere lo switch, al segnale “notify::active”.
Questo segnale si utilizza per notificare il cambiamento di una property.

Metodi

Di seguito i metodi utilizzabili con il widget Gtk.Switch:

new()

Metodo costruttore che crea un nuovo Gtk.Switch.

get_active()

Ritorna lo stato dello Switch.

get_state()

Ritorna lo stato principale dello Switch.

set_active(is_active)

Setta lo stato dello Switch. Se is_active è True, lo Switch sarà su ON, altrimenti su OFF.
Parametri:
is_active: il boolean che setta lo switch attivo;

set_state(state)

Setta lo stato dello Switch. Se non è stato settato appositamente un Delay, è la stessa cosa
di “active”. Ovvero “active” e “state” sono sincronizzati.
Parametri:
state: il boolean che setta lo stato dello switch;

actvate()

emette un segnale di tipo “activate”.

Di seguito un codice d’esempio:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk


class GWindow(Gtk.Window):
    def __init__(self):
        super().__init__(title="Switch Demo")
        self.set_border_width(10)

        hbox = Gtk.Box(spacing=6)
        self.add(hbox)

        switch1 = Gtk.Switch(active=False)
        switch1.name = "Switch1"
        switch2 = Gtk.Switch(active=True)
        switch2.name = "Switch2"
        # Bindings
        switch1.connect("notify::active", self.on_switch_activated)
        switch2.connect("notify::active", self.on_switch_activated)
        # Layout
        hbox.pack_start(switch1, True, True, 0)
        hbox.pack_start(switch2, True, True, 0)

    def on_switch_activated(self, switch, gparam):
        if switch.get_active():
            state = "on"
        else:
            state = "off"
        print("%s was turned %s" % (switch.name, state))


if __name__ == "__main__":
    win = GWindow()
    win.connect("destroy", Gtk.main_quit)
    win.show_all()
    Gtk.main()

link di riferimento:

torna all’indice degli appunti
Gtk3 Switch

Categorie:Gtk3, PyGObject, python Tag: , ,
I commenti sono chiusi.