PyGObject: Gtk.Switch
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:
Commenti recenti