PyGTK - Classe d'alignement
Ce widget s'avère utile pour contrôler l'alignement et la taille de ses widgets enfants. Il a quatre propriétés appelées xalign, yalign, xscale et yscale. Les propriétés d'échelle spécifient la quantité d'espace libre qui sera utilisée par les widgets enfants. Les propriétés d'alignement sont utilisées pour placer le widget enfant dans la zone disponible.
Les quatre propriétés prennent une valeur flottante comprise entre 0 et 1,0. Si les propriétés xscale et yscale sont définies sur 0, cela signifie que le widget n'absorbe aucun espace libre et s'il est défini sur 1, le widget absorbe le maximum d'espace libre horizontalement ou verticalement respectivement.
La propriété xalign et yalign, si elle est définie sur 0, signifie qu'il n'y aura pas d'espace libre à gauche ou au-dessus du widget. S'il est défini sur 1, il y aura un espace libre maximum à gauche ou au-dessus du widget.
La classe gtk.alignment a le constructeur suivant -
gtk.alignment(xalign = 0.0, yalign = 0.0, xscale = 0.0, yscale = 0.0)
Où,
xalign - Est la fraction de l'espace libre horizontal à gauche du widget enfant.
yalign - Est la fraction d'espace libre vertical au-dessus du widget enfant.
xscale - Is est la fraction d'espace libre horizontal absorbée par le widget enfant.
yscale - Is est la fraction d'espace libre vertical absorbée par le widget enfant.
Exemple
Le code suivant illustre l'utilisation du widget gtk.alignment. Une Vbox dans la fenêtre de niveau supérieur a une Vbox supérieure et une Hbox inférieure placées dedans. Dans la case verticale supérieure, une étiquette et un widget Entrée sont placés de telle sorte que vers la gauche, 50% de l'espace est libre et plus de 25% de celui-ci est occupé en attribuant 0,5 xalign et 0,25 aux propriétés yalign.
Dans la HBox inférieure, tout l'espace libre disponible se trouve sur le côté gauche. Ceci est réalisé en attribuant 1 à la propriété xalign. Par conséquent, deux boutons dans la zone horizontale apparaissent alignés à droite.
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()
Le code ci-dessus produit la sortie suivante -