Dôležité metódy pre umiestňovanie jednotlivých widget_ov do okna. Aby sme mohli umiestiť do okna niektorý z widget, potrebujeme zavolať metódu .pack() , .grid(), alebo .place().
Metóda (správca rozmiestnenia) .pack()
Táto metóda umiestňuje widgety do riadkov a stĺpcov. Algoritmus umiestňovania je jednoduchý, v hlavnom okne začína zľava a zhora, následne pokračuje ďalej. Najlepšie to vidno na nasledujúcom príklade:
import tkinter as tk
root = tk.Tk()
root.geometry('600x500')
root.title('Umiestňovanie metódou pack')
frame1 = tk.Label(root, text="prvý", width=20, height=20, bg="green")
frame1.pack(side=tk.LEFT, fill=tk.BOTH)
frame2 = tk.Label(root, text="druhý", height=6, bg="blue")
frame2.pack(fill=tk.BOTH)
frame3 = tk.Label(root, text="tretí", width=20, height=20, bg="red")
frame3.pack(side=tk.LEFT, fill=tk.BOTH)
frame4 = tk.Label(root, text="štvrtý", width=20, height=6, bg="brown")
frame4.pack(fill=tk.X)
frame5 = tk.Label(root, text="piaty", width=20, height=20, bg="orange")
frame5.pack(side=tk.LEFT, fill=tk.BOTH)
root.mainloop()
Pre ukážku som vkladal widget Frame, a aby to bolo dobre viditeľné zmenil som na každom farbu pozadia. Ak by som chcel umiestniť widget na spodok okna tak aby vyplnil celú spodnú časť, musí byť ako prvý v kóde.
import tkinter as tk
root = tk.Tk()
root.geometry('600x500')
root.title('Umiestňovanie metódou pack')
frame1 = tk.Label(root, text="prvý", width=6, height=6, bg="green")
frame1.pack(side=tk.BOTTOM, fill=tk.BOTH)
frame2 = tk.Label(root, text="druhý", height=6, bg="blue")
frame2.pack(fill=tk.BOTH)
frame3 = tk.Label(root, text="tretí", width=20, height=20, bg="red")
frame3.pack(side=tk.LEFT, fill=tk.BOTH)
frame4 = tk.Label(root, text="štvrtý", width=20, height=6, bg="brown")
frame4.pack(fill=tk.X)
frame5 = tk.Label(root, text="piaty", width=20, height=20, bg="orange")
frame5.pack(side=tk.LEFT, fill=tk.BOTH)
root.mainloop()
widget.pack( pack_možnosti )anchor= Kam sa umiestni widget vo vnútri ďalšieho widgetu. Ďeafultne je nastavený CENTER.
expand= Ak je nastavená na hodnotu true, widget sa rozšíri tak, aby vyplnil akékoľvek miesto, ktoré nie je inak využité v nadradenom zariadení widgetu.
fill= Určuje, či widget vyplní akékoľvek dodatočné miesto, ktoré mu pridelil packer, alebo si zachová svoje vlastné minimálne rozmery: NONE (predvolené), X (vyplní len horizontálne), Y (vyplní len vertikálne) alebo BOTH (vyplní horizontálne aj vertikálne).
side= Určuje, na ktorú stranu nadradeného widgetu sa zabalí: TOP (predvolené nastavenie), BOTTOM, LEFT alebo RIGHT.
ipadx= Vnitřní výplň. Standard je 0. ipady=Vnitřní výplň. Standard je 0.
padx= Vnější výplň. Standard je 0. pady=Vnější výplň. Standard je 0.
# Metódy spojené s .pack() root.pack_configure() # zmena umiestnenia, platí to isté ako pri .pack() root.pack_forget() # Schová widget, môžete ho opäť zobraziť pomocou .pack() root.pack_info() # Vracia slovník obsahujúci aktuálne parametre root.pack_slaves() # Metóda vracia zoznam všetkých potomkov widgetu
Metóda (správca rozmiestnenia) .grid()
Metóda „správca rozmiestnenia“ grid – mriežka. Tento správca je jednoduchší, všetky widgety ukladá do mriežky.
import tkinter as tk root = tk.Tk() root.geometry('600x500') root.title('Umiestňovanie metódou grid') frame1 = tk.Label(root, text="prvý", bg="green", width=20, height=10) frame1.grid(row=0, column=0) frame2 = tk.Label(root, text="druhý", bg="blue", width=20, height=10) frame2.grid(row=0, column=1) frame3 = tk.Label(root, text="tretí", bg="red", width=20, height=10) frame3.grid(row=0, column=2) frame4 = tk.Label(root, text="štvrtý", bg="brown", width=20, height=10) frame4.grid(row=1, column=0) frame5 = tk.Label(root, text="piaty", bg="orange", width=20, height=10) frame5.grid(row=1, column=1) frame6 = tk.Label(root, text="šiesty", bg="purple", width=20, height=10) frame6.grid(row=1, column=2) root.mainloop()
widget.grid( grid_možnosti )column =Stĺpec, do ktorého sa má widget umiestniť; predvolene 0 (najľavejší stĺpec).
columnspan = Koľko stĺpcov widget zaberie; predvolené 1.
ipadx, ipady = Koľko pixelov má widget vodorovne a zvisle vyplniť hranice widgetu.
padx, pady = Koľko pixelov má widget vodorovne a zvisle zaberať mimo hraníc v.
row = Riadok, do ktorého sa má umiestniť widget; predvolene prvý riadok, ktorý je ešte prázdny.
rowspan = Koľko riadkovwidget zaberie; predvolene 1.
sticky = Čo sa má urobiť, ak je bunka väčšia ako widget. V predvolenom nastavení sticky=“ je widget v bunke vycentrovaný. sticky môže byť reťazec zložený z nuly alebo viacerých N, E, S, W, NE, NW, SE a SW, smerov kompasu označujúcich strany a rohy bunky, ku ktorým sa widget prilepí.
# Metódy spojené s .grid() root.configure( grid_možnosti) # To isté ako .grid() root.grid_forget() # Schová widget (ale nezničí), môžete ho opäť zobraziť pomocou .grid() root.grid_remove() # Odoberie widget (nebude zničené), môžte ho znova zobraziť pomocou .grid() alebo aj iným,.. root.grid_size() # Vráti súčasnú veľkosť mriežky správcu rozmiestnenia, ktorý je pripojený k tomuto widgetu. root.grid_columnconfigure(index, **options) root.grid_rowconfigure(index, **options) # Nastavenie parametrov pre riadky a stĺpce. Ak ju chcete použiť na konkrétnu bunku, musíte ju zavolať nad jeho rodičom. # index= poradie riadku, minsize, pad, weight.
Správca rozmiestnenia .place()
Správca rozmiestnenia placeje najjednoduchší z troch všeobecných správcov geometrie poskytovaných v Tkinter. Umožňuje vám explicitne nastaviť polohu a veľkosť okna, či už v absolútnom vyjadrení, alebo vo vzťahu k inému oknu.
widget.place( place_možnosti )anchor= Presné miesto miniaplikácie, ďalšie možnosti sa týkajú: môže to byť S, V, J, Z, SV, SZ, JV alebo JZ, smery kompasu označujúce rohy a strany miniaplikácie; predvolená hodnota je NW (ľavý horný roh miniaplikácie)
bordermode= INSIDE (predvolené) na označenie, že ostatné možnosti sa týkajú vnútra rodiča (ignorujúc hranice rodiča); poprípade OUTSIDE .
height, width= Výška a šírka v pixeloch.
relheight, relwidth= Výška a šírka ako pohyblivá čiara medzi 0,0 a 1,0, ako zlomok výšky a šírky rodičovskej miniaplikácie.
relx, rely=Horizontálne a vertikálne posunutie ako pohyblivá čiara medzi 0,0 a 1,0, ako zlomok výšky a šírky rodičovskej miniaplikácie.
x, y=Horizontálne a vertikálne posunutie v pixeloch.
import tkinter as tk root = tk.Tk() root.geometry('600x500') root.title('Umiestňovanie metódou place') frame2 = tk.Label(root, text="druhý", bg="blue", width=20, height=10) frame2.place(x=1, y=2) frame1 = tk.Label(root, text="prvý", bg="green", width=20, height=10) frame1.place(x=150, y=60) root.mainloop()
# Metódy spojené s .place() root.place_configure() # To isté ako .place() root.place_forget() # Schová widget (ale nezničí), môžete ho opäť zobraziť pomocou .place() root.place_info() # Vráti slovník s údajmi o parametroch nastavených správcom .place() # {'in': <tkinter.Tk object .>, 'x': '2', 'relx': '0', 'y': '2', 'rely': '0', 'width': '', 'relwidth': '', 'height': '', 'relheight': '', 'anchor': 'nw', 'bordermode': 'inside'}
Peter Habovštiak© 2024Go to top