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