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: