PyGTK - AspectFrame-Klasse
Die Klasse gtk.AspectFrame ist eine Unterklasse der Klasse Frame. Das untergeordnete Widget in diesem Rahmen behält immer sein Seitenverhältnis (von Breite und Höhe) bei, auch wenn die Größe des Hauptfensters geändert wird.
Die ratio-Eigenschaft des Widgets gtk.AspectFrame bestimmt das Verhältnis von Widget-Breite zu Höhe. Ein Seitenverhältnis von 0,5 bedeutet, dass die Breite die Hälfte der Höhe beträgt. Ein Seitenverhältnis von 2,0 bedeutet, dass die Breite doppelt so hoch ist. Der Standardwert für die Eigenschaft "ratio" ist 1.0.
Die folgende Syntax wird für den Konstruktor der Klasse gtk.AspectFrame verwendet -
gtk.AspectFrame (label = None, xalign = 0.5, yalign = 0.5, ratio = 1.0, obey_child = True)
Das xalignEigenschaft bestimmt den Anteil der horizontalen freien Raum auf der linken Seite des Kindes. 0.0 bedeutet links keinen freien Platz, 1.0 bedeutet links allen freien Platz.
Das yalignEigenschaft bestimmt den Anteil des vertikalen freien Raums über dem Kind. 0.0 bedeutet keinen freien Speicherplatz darüber, 1.0 bedeutet den gesamten freien Speicherplatz oben.
Das Verhältnis von Breite zu Höhe des Rahmens wird beibehalten, wenn obey_child Eigentum ist falsch.
Die Eigenschaft obey_child bestimmt, ob das Verhältnis ignoriert werden soll. Der Standardwert ist True.
Der folgende Code ähnelt dem für die Frame-Klasse verwendeten. Der einzige Unterschied besteht darin, dass die ButonBox in einem AspectFrame-Widget platziert ist.
frm = gtk.AspectFrame(label = None, xalign = 0.5, yalign = 0.5,
ratio = 5.0, obey_child = False)
Note - Die Eigenschaft obey_child wird auf False gesetzt, da das Seitenverhältnis beibehalten werden soll, auch wenn die Fenstergröße geändert wird.
Beispiel
Beachten Sie den folgenden Code -
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()
Der obige Code erzeugt die folgenden Originalfenster und Fenster mit geänderter Größe:
Original Window
Resized Window