PyGTK - klasa wyrównania

Ten widżet okazuje się przydatny do kontrolowania wyrównania i rozmiaru swoich widgetów potomnych. Ma cztery właściwości zwane xalign, yalign, xscale i yscale. Właściwości skali określają, ile wolnego miejsca zostanie wykorzystane przez widżety podrzędne. Właściwości wyrównania służą do umieszczania widgetu podrzędnego w dostępnym obszarze.

Wszystkie cztery właściwości przyjmują wartość zmiennoprzecinkową z zakresu od 0 do 1,0. Jeśli właściwość xscale i yscale jest ustawiona na 0, oznacza to, że widget nie pochłania żadnej wolnej przestrzeni, a jeśli jest ustawiona na 1, widget zajmie maksymalną wolną przestrzeń odpowiednio w poziomie lub w pionie.

Właściwość xalign i yalign, jeśli jest ustawiona na 0, oznacza, że ​​nie będzie wolnego miejsca po lewej lub powyżej widżetu. W przypadku ustawienia na 1 maksymalna wolna przestrzeń będzie po lewej stronie lub nad widżetem.

Klasa gtk.alignment ma następujący konstruktor -

gtk.alignment(xalign = 0.0, yalign = 0.0, xscale = 0.0, yscale = 0.0)

Gdzie,

  • xalign - Jest ułamkiem poziomej wolnej przestrzeni po lewej stronie widżetu podrzędnego.

  • yalign - Jest ułamkiem pionowej wolnej przestrzeni nad widżetem podrzędnym.

  • xscale - Jest to ułamek poziomej wolnej przestrzeni, którą zajmuje widżet podrzędny.

  • yscale - Jest to ułamek pionowej wolnej przestrzeni, którą zajmuje widżet dziecka.

Przykład

Poniższy kod demonstruje użycie widżetu gtk.alignment. Vbox w oknie najwyższego poziomu ma umieszczony w nim górny Vbox i dolny Hbox. W górnym pionowym polu etykieta i widżet Wejście są umieszczone tak, że po lewej stronie 50% miejsca jest wolne, a ponad 25% z tego jest zajmowane przez przypisanie 0,5 xalign i 0,25 do właściwości yalign.

W dolnym HBox cała dostępna wolna przestrzeń znajduje się po lewej stronie. Osiąga się to poprzez przypisanie 1 do właściwości xalign. Dlatego dwa przyciski w poziomym polu są wyrównane do prawej.

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()

Powyższy kod daje następujące dane wyjściowe -