PyGTK - Classe ToggleButton

Il widget ToggleButton è un gtk.Button con due stati: a pressed or active (o su) stato e a normal or inactive (or off)stato. Ogni volta che si preme il pulsante, lo stato si alterna. Lo stato del ToggleButton può anche essere modificato a livello di codice tramite il metodo set_active (). Per cambiare lo stato del pulsante, è disponibile anche il metodo toggled ().

La classe gtk.ToggleButton ha il seguente costruttore:

gtk.ToggleButton(label = None, use_underline = True)

Qui, l'etichetta è il test da visualizzare sul pulsante. La proprietà use_underline, se True, un trattino basso nel testo indica che il carattere successivo deve essere sottolineato e utilizzato per l'acceleratore mnemonico.

Alcuni dei metodi importanti della classe gtk.ToggleButton sono forniti nella tabella seguente:

set_active () Questo imposta il active proprietà al valore a True (attivo o premuto o acceso) o False (inattivo o normale o spento)
get_active () Questo recupera lo stato del pulsante
alternato () Questo emette il segnale "attivato / disattivato" sul pulsante di attivazione / disattivazione.

Il widget ToggleButton emette il seguente segnale:

Commutato Viene emesso quando lo stato del pulsante di attivazione / disattivazione cambia a livello di codice o dall'azione dell'utente.

Il codice fornito di seguito dimostra l'uso dei widget ToggleButton.

Due widget ToggleButtons e Label vengono inseriti in un contenitore VBox. Il segnale alternato emesso da Button1 è connesso a una funzione di callback on_toggled (). In questa funzione, lo stato di Button2 è impostato su True se quello di Button1 è False e viceversa.

if self.btn1.get_active() == True:
   self.btn2.set_active(False)
else:
   self.btn2.set_active(True)

Visualizza gli stati istantanei dei pulsanti sull'etichetta.

Esempio

Rispettare il codice seguente:

import gtk

 PyApp(gtk.Window):
   
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Toggle Button")
      self.set_default_size(250, 200)
      self.set_position(gtk.WIN_POS_CENTER)
      
      vbox = gtk.VBox()
      self.btn1 = gtk.ToggleButton("Button 1")
      self.btn1.connect("toggled", self.on_toggled)
      self.btn2 = gtk.ToggleButton("Button 2")
      self.lbl = gtk.Label()
      
      vbox.add(self.btn1)
      vbox.add(self.btn2)
      vbox.add(self.lbl)
      self.add(vbox)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
   
   def on_toggled(self, widget, data = None):
      if self.btn1.get_active() == True:
         self.btn2.set_active(False)
      else:
         self.btn2.set_active(True)
         state = "Button1 : "+str(self.btn1.get_active())+" 
         Button2 : "+str(self.btn2.get_active())
         self.lbl.set_text(state)
if __name__ == '__main__':
   PyApp()
   gtk.main()

Il codice precedente genera il seguente output: