PyGTK - Clase AspectFrame
La clase gtk.AspectFrame es una subclase de la clase Frame. El widget secundario en este marco siempre conserva su relación de aspecto (de ancho y alto) incluso si se cambia el tamaño de la ventana principal.
La propiedad de ratio del widget gtk.AspectFrame determina la relación ancho: alto del widget. Una relación de aspecto de 0,5 significa que el ancho es la mitad de la altura; una relación de aspecto de 2.0 significa que el ancho es el doble de la altura. El valor predeterminado de la propiedad "ratio" es 1,0.
La siguiente sintaxis se utiliza para el constructor de la clase gtk.AspectFrame:
gtk.AspectFrame (label = None, xalign = 0.5, yalign = 0.5, ratio = 1.0, obey_child = True)
los xalignLa propiedad determina la fracción de espacio libre horizontal a la izquierda del niño. 0.0 significa que no hay espacio libre a la izquierda, 1.0 significa todo el espacio libre a la izquierda.
los yalignLa propiedad determina la fracción de espacio libre vertical sobre el niño. 0.0 significa que no hay espacio libre arriba, 1.0 significa todo el espacio libre arriba.
La relación entre el ancho y la altura del marco se mantiene si obey_child la propiedad es falsa.
La propiedad obey_child determina si se ignorará la proporción. El defecto es cierto.
El siguiente código es similar al utilizado para la clase Frame. La única diferencia es que ButonBox se coloca en un widget AspectFrame.
frm = gtk.AspectFrame(label = None, xalign = 0.5, yalign = 0.5,
ratio = 5.0, obey_child = False)
Note - La propiedad obey_child se establece en False porque se desea conservar la relación de aspecto incluso si se cambia el tamaño de la ventana.
Ejemplo
Observe el siguiente 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()
El código anterior producirá las siguientes ventanas originales y redimensionadas:
Original Window
Resized Window