Los botones de activación heredan muchas propiedades y métodos de los botones biestado vistos anteriormente, pero su apariencia es un poco diferente. En vez de ser botones con texto dentro de ellos, son pequeñas cajas con un texto a su derecha. Normalmente se utilizan para opciones que pueden estar activadas o desactivadas en las aplicaciones.
El método de creación es similar al de los botones normales.
check_button = gtk.CheckButton(label=None) |
Si el argumento label se especifica, el método crea un botón de activación con una etiqueta a su lado. El texto label de la etiqueta se analiza en busca de caracteres mnemotécnicos con prefijo '_'
Ver y modificar el estado de un botón de activación es igual que en un botón biestado.
El programa checkbutton.py proporciona un ejemplo del uso de los botones de activación. La figura Figura 6.3, “Ejemplo de Botón de Activación” ilustra la ventana resultante:
El código fuente del programa checkbutton.py es:
1 #!/usr/bin/env python
2
3 # ejemplo checkbutton.py
4
5 import pygtk
6 pygtk.require('2.0')
7 import gtk
8
9 class CheckButton:
10 # Nuestra retrollamada
11 # Los datos pasados a este método se imprimen en la salida estándar
12 def callback(self, widget, data=None):
13 print "%s was toggled %s" % (data, ("OFF", "ON")[widget.get_active()])
14
15 # Esta retrollamada termina el programa
16 def delete_event(self, widget, event, data=None):
17 gtk.main_quit()
18 return gtk.FALSE
19
20 def __init__(self):
21 # Crear una nueva ventana
22 self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
23
24 # Establecer el título de la ventana
25 self.window.set_title("Check Button")
26
27 # Fijar un manejador para delete_event que
28 # salga inmediatamente de GTK.
29 self.window.connect("delete_event", self.delete_event)
30
31 # Fijamos el borde de la ventana
32 self.window.set_border_width(20)
33
34 # Creamos una caja vertical vbox
35 vbox = gtk.VBox(gtk.TRUE, 2)
36
37 # Insertamos vbox en la ventana principal
38 self.window.add(vbox)
39
40 # Creamos el primer botón
41 button = gtk.CheckButton("check button 1")
42
43 # Cuando se conmuta el botón llamamos el método "callback"
44 # con un puntero a "button" como argumento
45 button.connect("toggled", self.callback, "check button 1")
46
47
48 # Insertamos el botón 1
49 vbox.pack_start(button, gtk.TRUE, gtk.TRUE, 2)
50
51 button.show()
52
53 # Creamos un segundo botón
54
55 button = gtk.CheckButton("check button 2")
56
57 # Cuando se conmuta el botón llamamos el método "callback"
58 # con un puntero a "button 2" como argumento
59 button.connect("toggled", self.callback, "check button 2")
60 # Insertamos el botón 2
61 vbox.pack_start(button, gtk.TRUE, gtk.TRUE, 2)
62
63 button.show()
64
65 # Creamos el botón "Quit"
66 button = gtk.Button("Quit")
67
68 # Cuando se pulsa el botón llamamos la función mainquit
69 # y el programa termina
70 button.connect("clicked", lambda wid: gtk.main_quit())
71
72 # Insertamos el botón de salida
73 vbox.pack_start(button, gtk.TRUE, gtk.TRUE, 2)
74
75 button.show()
76 vbox.show()
77 self.window.show()
78
79 def main():
80 gtk.main()
81 return 0
82
83 if __name__ == "__main__":
84 CheckButton()
85 main()
|