PyGTK - Clase de alineación
Este widget resulta útil para controlar la alineación y el tamaño de sus widgets secundarios. Tiene cuatro propiedades llamadas xalign, yalign, xscale e yscale. Las propiedades de la escala especifican cuánto espacio libre utilizarán los widgets secundarios. Las propiedades de alineación se utilizan para colocar el widget secundario dentro del área disponible.
Las cuatro propiedades toman un valor flotante entre 0 y 1.0. Si la propiedad xscale y yscale se establece en 0, significa que el widget no absorbe nada de espacio libre y si se establece en 1, el widget absorbe el espacio libre máximo horizontal o verticalmente, respectivamente.
La propiedad xalign y yalign si se establece en 0, significa que no habrá espacio libre a la izquierda o arriba del widget. Si se establece en 1, habrá un máximo de espacio libre a la izquierda o encima del widget.
La clase gtk.alignment tiene el siguiente constructor:
gtk.alignment(xalign = 0.0, yalign = 0.0, xscale = 0.0, yscale = 0.0)
Dónde,
xalign - Es la fracción del espacio libre horizontal a la izquierda del widget secundario.
yalign - Es la fracción de espacio libre vertical sobre el widget secundario.
xscale - Es la fracción de espacio libre horizontal que absorbe el widget secundario.
yscale - Es la fracción de espacio libre vertical que absorbe el widget secundario.
Ejemplo
El siguiente código demuestra el uso del widget gtk.alignment. Un Vbox en la ventana de nivel superior tiene un Vbox superior y un Hbox inferior colocados en él. En el recuadro vertical superior, se colocan una etiqueta y un widget de Entrada de manera que hacia la izquierda, el 50% del espacio se mantiene libre y más del 25% de éste se ocupa asignando 0.5 xalign y 0.25 a yalign propiedades.
En el HBox inferior, todo el espacio libre disponible está en el lado izquierdo. Esto se logra asignando 1 a la propiedad xalign. Por lo tanto, dos botones en el cuadro horizontal aparecen alineados a la derecha.
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("Alignment demo")
self.set_size_request(400,200)
self.set_position(gtk.WIN_POS_CENTER)
vbox = gtk.VBox(False, 5)
vb = gtk.VBox()
hbox = gtk.HBox(True, 3)
valign = gtk.Alignment(0.5,0.25, 0, 0)
lbl = gtk.Label("Name of student")
vb.pack_start(lbl, True, True, 10)
text = gtk.Entry()
vb.pack_start(text, True, True, 10)
valign.add(vb)
vbox.pack_start(valign)
ok = gtk.Button("OK")
ok.set_size_request(70, 30)
close = gtk.Button("Close")
hbox.add(ok)
hbox.add(close)
halign = gtk.Alignment(1, 0, 0, 0)
halign.add(hbox)
vbox.pack_start(halign, False, False, 3)
self.add(vbox)
self.connect("destroy", gtk.main_quit)
self.show_all()
PyApp()
gtk.main()
El código anterior produce la siguiente salida: