Los Marcos se pueden usar para encerrar un widget o un grupo de ellos dentro de una caja que, opcionalmente, puede llevar un título. La posición del título y el estilo de la caja se puede alterar a gusto.
Un Frame (Marco) se puede crear con la
siguiente función
frame = gtk.Frame(label=None)
El label (título) se coloca en la esquina
superior izquierda del marco de manera predeterminada. Especificando un valor
de None para el argumento label o sin especificar el
argumento label hará que no se visualice ningún título. El
texto del título se puede cambiar usando el método:
frame.set_label(label)
La posición del título se puede cambiar usando el método:
frame.set_label_align(xalign,yalign)
xalign y yalign toman valores
entre 0.0 y 1.0. xalign indica la posición del título en
la horizontal superior del marco. yalign no se usa por
ahora. El valor por defecto de xalign es 0.0 lo que coloca
al título en la esquina izquierda del marco.
El siguiente método modifica el estilo de la caja que se usa para rodear el marco.
frame.set_shadow_type(type)
El argumento type puede tomar uno de los
siguientes valores:
SHADOW_NONE # sin sombra SHADOW_IN # sombra hacia dentro SHADOW_OUT # sombra hacia fuera SHADOW_ETCHED_IN # sombra marcada hacia dentro (valor predeterminado) SHADOW_ETCHED_OUT # sombra marcada hacia fuera
El ejemplo frame.py muestra el uso del control Marco. La figura Figura 10.4, “Ejemplo de Marco” muestra la ventana resultante:
EL código fuente de frame.py es:
1 #!/usr/bin/env python
2
3 # ejemplo frame.py
4
5 import pygtk
6 pygtk.require('2.0')
7 import gtk
8
9 class FrameExample:
10 def __init__(self):
11 # Creamos una ventana nueva
12 window = gtk.Window(gtk.WINDOW_TOPLEVEL)
13 window.set_title("Frame Example")
14
15 # Conectamos el evento "destroy" al manejador de señal
16 window.connect("destroy", lambda w: gtk.main_quit())
17 window.set_size_request(300, 300)
18
19 # Fijamos el grosor del borde de ventana
20 window.set_border_width(10)
21
22 # Creamos un Marco
23 frame = gtk.Frame()
24 window.add(frame)
25
26 # Fijamos la etiqueta del marco
27 frame.set_label("GTK Frame Widget")
28
29 # Alineamos la etiqueta a la derecha del marco
30 frame.set_label_align(1.0, 0.0)
31
32 # Fijamos el estilo del marco
33 frame.set_shadow_type(gtk.SHADOW_ETCHED_OUT)
34 frame.show()
35
36 # Mostramos la ventana
37 window.show()
38
39 def main():
40 # Entramos en el bucle de eventos
41 gtk.main()
42 return 0
43
44 if __name__ == "__main__":
45 FrameExample()
46 main()
Los programas calendar.py, label.py y spinbutton.py también usan Marcos.