PyGTK - klasa AspectFrame
Klasa gtk.AspectFrame jest podklasą klasy Frame. Widżet potomny w tej ramce zawsze zachowuje swoje proporcje (szerokość i wysokość), nawet jeśli rozmiar okna głównego zostanie zmieniony.
Właściwość ratio widżetu gtk.AspectFrame określa stosunek szerokości do wysokości widżetu. Współczynnik proporcji wynoszący 0,5 oznacza, że szerokość jest równa połowie wysokości; współczynnik proporcji równy 2,0 oznacza, że szerokość jest dwukrotnie większa od wysokości. Domyślna wartość właściwości „ratio” to 1,0.
Następująca składnia jest używana dla konstruktora klasy gtk.AspectFrame -
gtk.AspectFrame (label = None, xalign = 0.5, yalign = 0.5, ratio = 1.0, obey_child = True)
Plik xalignwłaściwość określa ułamek poziomej wolnej przestrzeni po lewej stronie dziecka. 0,0 oznacza brak wolnego miejsca po lewej stronie, 1,0 oznacza całe wolne miejsce po lewej stronie.
Plik yalignwłaściwość określa ułamek pionowej wolnej przestrzeni nad dzieckiem. 0,0 oznacza brak wolnego miejsca powyżej, 1,0 oznacza całą wolną przestrzeń powyżej.
Stosunek szerokości do wysokości ramy jest zachowany, jeśli obey_child właściwość jest fałszywa.
Właściwość obey_child określa, czy współczynnik ma być ignorowany. Wartość domyślna to True.
Poniższy kod jest podobny do kodu używanego w klasie Frame. Jedyną różnicą jest to, że ButonBox jest umieszczony w widgecie AspectFrame.
frm = gtk.AspectFrame(label = None, xalign = 0.5, yalign = 0.5,
ratio = 5.0, obey_child = False)
Note - Właściwość obey_child jest ustawiona na False, ponieważ pożądane jest zachowanie współczynnika kształtu, nawet jeśli rozmiar okna zostanie zmieniony.
Przykład
Przestrzegaj następującego kodu -
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()
Powyższy kod wygeneruje następujące oryginalne okna o zmienionym rozmiarze -
Original Window
Resized Window