tkinter
Menedżerowie geometrii Tkinter
Szukaj…
Wprowadzenie
Istnieją trzy menedżery geometrii do pozycjonowania widżetów: pack()
, grid()
i place()
.
Pakiet()
Menedżer geometrii pack()
organizuje widżety w bloki przed umieszczeniem ich w widżecie nadrzędnym. Wykorzystuje opcje fill
, expand
i side
.
Składnia
widget.pack(option)
Napełnić
Określa, czy widżet zachowuje minimalną potrzebną przestrzeń, czy zajmuje dodatkowe przydzielone miejsce. Atrybuty: BRAK (domyślnie), X (wypełnij poziomo), Y (wypełnij pionowo) lub OBA (wypełnij zarówno poziomo, jak i pionowo).
Rozszerzać
Po ustawieniu na TAK widżet rozszerza się, wypełniając dowolne miejsce nieużywane w jego rodzicu. Atrybuty: TAK, NIE.
Bok
Określa, do której strony elementu nadrzędnego widgetu jest spakowany. Atrybuty: GÓRA (domyślnie), DOLNY, LEWY lub PRAWY.
Przykład
from tkinter import *
root = Tk()
btn_fill = Button(root, text="Button")
btn_fill.pack(fill=X)
btn_expand = Button(root, text="Button")
btn_expand.pack(expand=YES)
btn_side = Button(root, text="Button")
btn_side.pack(side=RIGHT)
root.mainloop()
Wynik
krata()
Menedżer geometrii grid()
organizuje widżety w strukturze przypominającej tabelę w widżecie nadrzędnym. Główny widget jest podzielony na wiersze i kolumny, a każda część tabeli może zawierać widget. Wykorzystuje column
, columnspan
, ipadx
, ipady
, padx
, pady
, row
, rowspan
i sticky
.
Składnia
widget.grid(options)
Kolumna
Kolumna, w której ma zostać umieszczony widżet. Domyślna kolumna to 0, która jest kolumną najbardziej na lewo.
Rozpiętość kolumn
Ile widżetów kolumn zajmuje. Wartość domyślna to 1.
Ipadx
Ile pikseli ma wypełnić widżet poziomo wewnątrz granic widżetu.
Ipady
Ile pikseli ma wypełnić widżet pionowo w granicach widżetu.
Padx
Ile pikseli ma wypełnić widżet poziomo poza obręb widżetu.
Pady
Ile pikseli ma wypełnić widżet pionowo poza jego granicami.
Rząd
Wiersz do umieszczenia widżetu. Domyślnym wierszem jest 0, która jest najwyższą kolumną.
Rozpiętość rzędów
Ile wierszy zajmuje widżet. Wartość domyślna to 1.
Lepki
Gdy widżet jest mniejszy niż komórka, sticky
służy do wskazania, po których bokach i rogach komórki przylega widżet. Kierunek jest definiowany przez kierunki kompasu: N, E, S, W, NE, NW, SE i SW i zero. Mogą to być konkatenacje łańcuchowe, na przykład NESW powoduje, że widget zajmuje cały obszar komórki.
Przykład
from tkinter import *
root = Tk()
btn_column = Button(root, text="I'm in column 3")
btn_column.grid(column=3)
btn_columnspan = Button(root, text="I have a columnspan of 3")
btn_columnspan.grid(columnspan=3)
btn_ipadx = Button(root, text="ipadx of 4")
btn_ipadx.grid(ipadx=4)
btn_ipady = Button(root, text="ipady of 4")
btn_ipady.grid(ipady=4)
btn_padx = Button(root, text="padx of 4")
btn_padx.grid(padx=4)
btn_pady = Button(root, text="pady of 4")
btn_pady.grid(pady=4)
btn_row = Button(root, text="I'm in row 2")
btn_row.grid(row=2)
btn_rowspan = Button(root, text="Rowspan of 2")
btn_rowspan.grid(rowspan=2)
btn_sticky = Button(root, text="I'm stuck to north-east")
btn_sticky.grid(sticky=NE)
root.mainloop()
Wynik
miejsce()
Menedżer place()
organizuje widżety, umieszczając je w określonej pozycji w widżecie nadrzędnym. Menadżer geometria wykorzystuje możliwości anchor
, bordermode
, height
, width
, relheight
, relwidth
, relx
, rely
, x
i y
.
Kotwica
Wskazuje, gdzie jest zakotwiczony widget. Dostępne opcje to kierunki kompasu: N, E, S, W, NE, NW, SE lub SW, które odnoszą się do boków i narożników widgetu nadrzędnego. Domyślnie jest to NW (lewy górny róg widgetu)
Bordermode
Bordermode posiada dwie opcje: INSIDE
, który wskazuje, że inne opcje odnoszą się do wewnątrz rodzica, (ignorując granice rodzica) oraz OUTSIDE
, który jest przeciwieństwem.
Wysokość
Określ wysokość widgetu w pikselach.
Szerokość
Określ szerokość widgetu w pikselach.
Relheight
Wysokość jako liczba zmiennoprzecinkowa między 0,0 a 1,0, jako ułamek wysokości widżetu nadrzędnego.
Przepustowość
Szerokość jako liczba zmiennoprzecinkowa między 0,0 a 1,0, jako ułamek szerokości widżetu nadrzędnego.
Relx
Przesunięcie poziome jako liczba zmiennoprzecinkowa między 0,0 a 1,0, jako ułamek szerokości widżetu nadrzędnego.
Polegać
Przesunięcie pionowe jako liczba zmiennoprzecinkowa między 0,0 a 1,0, jako ułamek wysokości widżetu nadrzędnego.
X
Przesunięcie w poziomie w pikselach.
Y
Przesunięcie pionowe w pikselach.
Przykład
from tkinter import *
root = Tk()
root.geometry("500x500")
btn_height = Button(root, text="50px high")
btn_height.place(height=50, x=200, y=200)
btn_width = Button(root, text="60px wide")
btn_width.place(width=60, x=300, y=300)
btn_relheight = Button(root, text="Relheight of 0.6")
btn_relheight.place(relheight=0.6)
btn_relwidth= Button(root, text="Relwidth of 0.2")
btn_relwidth.place(relwidth=0.2)
btn_relx=Button(root, text="Relx of 0.3")
btn_relx.place(relx=0.3)
btn_rely=Button(root, text="Rely of 0.7")
btn_rely.place(rely=0.7)
btn_x=Button(root, text="X = 400px")
btn_x.place(x=400)
btn_y=Button(root, text="Y = 321")
btn_y.place(y=321)
root.mainloop()
Wynik