PyGTK - Clase ToggleButton

El widget ToggleButton es un gtk.Button con dos estados: un pressed or active (o en) estado y un normal or inactive (or off)estado. Cada vez que se presiona el botón, el estado se alterna. El estado del ToggleButton también se puede cambiar mediante programación mediante el método set_active (). Para cambiar el estado del botón, también está disponible el método toggled ().

La clase gtk.ToggleButton tiene el siguiente constructor:

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

Aquí, la etiqueta es la prueba que se mostrará en el botón. La propiedad use_underline, si es True, un subrayado en el texto indica que el siguiente carácter debe estar subrayado y usarse para el acelerador mnemónico.

Algunos de los métodos importantes de la clase gtk.ToggleButton se dan en la siguiente tabla:

set_active () Esto establece el active propiedad al valor de True (activo o pulsado o encendido) o False (inactivo o normal o apagado)
get_active () Esto recupera el estado del botón
alternado () Esto emite la señal "conmutada" en el botón de alternancia.

El widget ToggleButton emite la siguiente señal:

Alternado Esto se emite cuando el estado del botón de alternancia cambia de forma programática o por la acción del usuario.

El código que se proporciona a continuación demuestra el uso de los widgets ToggleButton.

Dos widgets ToggleButtons y Label se colocan en un contenedor VBox. La señal conmutada emitida por Button1 está conectada a una función de devolución de llamada on_toggled (). En esta función, el estado de Button2 se establece en True si el de Button1 es False y viceversa.

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

Muestra los estados instantáneos de los botones de la etiqueta.

Ejemplo

Observe el siguiente código:

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()

El código anterior genera la siguiente salida: