PyGTK - класс выравнивания

Этот виджет оказывается полезным для управления выравниванием и размером его дочерних виджетов. Он имеет четыре свойства: xalign, yalign, xscale и yscale. Свойства масштаба указывают, сколько свободного места будет использоваться дочерними виджетами. Свойства выравнивания используются для размещения дочернего виджета в доступной области.

Все четыре свойства принимают значение с плавающей запятой от 0 до 1.0. Если для свойства xscale и yscale установлено значение 0, это означает, что виджет не поглощает свободное пространство, а если установлено значение 1, виджет поглощает максимальное свободное пространство по горизонтали или вертикали соответственно.

Если для свойства xalign и yalign установлено значение 0, это означает, что не будет свободного места слева или над виджетом. Если установлено значение 1, слева или над виджетом будет максимально свободное пространство.

Класс gtk.alignment имеет следующий конструктор -

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

Где,

  • xalign - Доля горизонтального свободного пространства слева от дочернего виджета.

  • yalign - Доля вертикального свободного пространства над дочерним виджетом.

  • xscale - Is - это доля горизонтального свободного пространства, которую поглощает дочерний виджет.

  • yscale - Is - это доля вертикального свободного пространства, которую поглощает дочерний виджет.

пример

Следующий код демонстрирует использование виджета gtk.alignment. Vbox в окне верхнего уровня имеет верхний Vbox и нижний Hbox, расположенный в нем. В верхнем вертикальном поле метка и виджет Entry размещаются таким образом, что слева 50% пространства остается свободным и более 25% занято назначением 0,5 xalign и 0,25 свойств yalign.

В нижнем HBox все доступное свободное пространство находится на левой стороне. Это достигается присвоением 1 свойству xalign. Следовательно, две кнопки в горизонтальном поле отображаются выровненными по правому краю.

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

Приведенный выше код дает следующий вывод -