PyGTK - Classe AspectFrame

A classe gtk.AspectFrame é uma subclasse da classe Frame. O widget filho neste quadro sempre retém sua proporção (de largura e altura), mesmo se a janela principal for redimensionada.

A propriedade de proporção do widget gtk.AspectFrame determina a proporção largura: altura do widget. Uma proporção de 0,5 significa que a largura é metade da altura; uma proporção de 2,0 significa que a largura é o dobro da altura. O valor padrão da propriedade "ratio" é 1,0.

A sintaxe a seguir é usada para o construtor da classe gtk.AspectFrame -

gtk.AspectFrame (label = None, xalign = 0.5, yalign = 0.5, ratio = 1.0, obey_child = True)

o xalignpropriedade determina a fração de espaço livre horizontal à esquerda do filho. 0,0 significa nenhum espaço livre à esquerda, 1,0 significa todo o espaço livre à esquerda.

o yalignpropriedade determina a fração do espaço livre vertical acima do filho. 0,0 significa nenhum espaço livre acima, 1,0 significa todo o espaço livre acima.

A relação entre largura e altura do quadro é mantida se obey_child propriedade é False.

A propriedade obey_child determina se a proporção deve ser ignorada. O padrão é verdadeiro.

O código a seguir é semelhante ao usado para a classe Frame. A única diferença é que o ButonBox é colocado em um widget AspectFrame.

frm = gtk.AspectFrame(label = None, xalign = 0.5, yalign = 0.5, 
   ratio = 5.0, obey_child = False)

Note - A propriedade obey_child é definida como False porque é desejável manter a proporção da imagem mesmo se a janela for redimensionada.

Exemplo

Observe o seguinte código -

import gtk

class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Aspect Frame Demo")
      self.set_default_size(250, 200)
      self.set_border_width(5)
      frm = gtk.AspectFrame(label = None, xalign = 0.5, yalign = 0.5, 
         ratio = 5.0, obey_child = False)
      hb = gtk.HButtonBox()
      btn1 = gtk.RadioButton(None,"Degree")
      hb.add(btn1)
      btn2 = gtk.RadioButton(btn1,"P.G.")
      hb.add(btn2)
      btn3 = gtk.RadioButton(btn1,"Doctorate")
      hb.add(btn3)
      frm.add(hb)
      frm.set_label("Qualifications")
      self.add(frm)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
      
if __name__ == '__main__':
   PyApp()
   gtk.main()

O código acima irá produzir as seguintes janelas originais e redimensionadas -

Original Window

Resized Window