Ako príklad si vysvetlíme na Tkinter Frame. Tkinter Frame pomáha organizovať widgety. Máte tiež možnosť vytvárať Frame vo vnútri Frame, čo umožňuje ešte lepšiu organizáciu widgetov.
Prvý parameter widgetu musí vždy ukazovať na inštanciu Tkinter a je jediným povinným parametrom. Všetky ostatné sú nepovinné.
Najlepšie to vidno na nasledujúcom kóde:
# Importovanie knižnice tkinter
import tkinter as tk
# Vytvorenie inštancie - rodičovského (hlavného) okna
root = tk.Tk()
# vytvorenie prvého rámčeka, jeho rodičovský widget je "root"
frame = tk.Frame(root)
# Umiestnenie rámčeku do hlavného okna pomocou metódy .pack()
frame.pack()
# Vytvorenie ďalšieho rámčeka, ako rodič je tu už ale widget "frame"
frame2 = tk.LabelFrame(frame)
frame2.pack()
# Vytvorenie textového štítku ako rodič je "frame2"
lbl = tk.Label(frame2, text="hello", width=12, height=12)
lbl.pack()
# Funkcia ktorá vypíše rodičov widgetu
print(lbl.winfo_parent())
# Funkcia ktorá zabezpečí beh aplilkácie
root.mainloop()
Metóda winfo_parent(), ktorú sme zavolali nad inštanciou lbl nám vráti nasledovné: .!frame.!labelframe
Znamená to že widget Label je potomok LabelFrame. Tento je potomok Frame, ktorý je potomok hlavného okna root.
Toto dedenie nám dáva možnosť za pomoci widgetov Frame, LabeFrame a iných kombinovať jednotlivé widgety do ucelených častí.
Objekt vytvorený z Tk()
nazývanýroot
sa používa ako rodič. Keď však používate widget Frame, ostatné widgety, ktoré majú byť v rámci, budú brať Frame ako nadradený. V podstate, zatiaľ čo rámec Tkinter bude mať root
ako rodiča, widgety budú mať jeden z mnohých vytvorených Frame, ako svojho rodiča.
Je dôležité sledovať kto je koho potomkom, hlavne ak bude potrebné niektorý widget zničiť. Pokiaľ by to bol rodičovský widget, zničíme všetkých jeho potomkov.