PyGTK - Classe de Alinhamento

Este widget é útil para controlar o alinhamento e o tamanho de seus widgets filhos. Ele tem quatro propriedades chamadas xalign, yalign, xscale e yscale. As propriedades de escala especificam quanto espaço livre será usado pelos widgets filhos. As propriedades de alinhamento são usadas para colocar o widget filho dentro da área disponível.

Todas as quatro propriedades assumem um valor flutuante entre 0 e 1,0. Se as propriedades xscale e yscale estiverem configuradas para 0, significa que o widget não absorve nenhum espaço livre e, se configurada para 1, o widget absorve o espaço livre máximo horizontal ou verticalmente, respectivamente.

As propriedades xalign e yalign se definidas como 0, significa que não haverá espaço livre à esquerda ou acima do widget. Se definido como 1, haverá espaço livre máximo à esquerda ou acima do widget.

A classe gtk.alignment tem o seguinte construtor -

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

Onde,

  • xalign - É a fração do espaço livre horizontal à esquerda do widget filho.

  • yalign - É a fração do espaço livre vertical acima do widget filho.

  • xscale - Is é a fração do espaço livre horizontal que o widget filho absorve.

  • yscale - Is é a fração do espaço livre vertical que o widget filho absorve.

Exemplo

O código a seguir demonstra o uso do widget gtk.alignment. Uma Vbox na janela de nível superior tem uma Vbox superior e uma Hbox inferior nela. Na caixa vertical superior, um rótulo e um widget de entrada são colocados de forma que, à esquerda, 50% do espaço seja mantido livre e mais de 25% desse espaço seja ocupado atribuindo propriedades de 0,5 xalign e 0,25 a yalign.

No HBox inferior, todo o espaço livre disponível está no lado esquerdo. Isso é obtido atribuindo 1 à propriedade xalign. Portanto, dois botões na caixa horizontal aparecem alinhados à direita.

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

O código acima produz a seguinte saída -