Úvod do Tkinter - Okna pro jazyk Python - Postavené na základech 'An Introduction to Tkinter'
Správce rozmístnění Grid (česky mřížka) vkládá udělátka do pomyslné tabulky (mřížky). Rodičovské udělátko je rozděleno na řádky a sloupce a každá z buněk této tabulky může obsahovat udělátko.
Grid je nejflexibilnější ze správců v Tkinter. Pokud se vám nechce učit jak a kdy používat všechny tři správce, měli byste se určitě naučit minimálně tento.
Správce Grid je obzvláště výhodný, když navrhujete dialogová okna. Pokud jste dnes zvyklí na správce Pack, budete asi překvapení, jak snadno to lze zařídit s Gridem. Namísto používání mnoha Rámečků, aby pakování fungovalo jak má, můžete v nejjednodušším případě nalít všechny udělátka do jediného kontejneru a použít správce grid na umístnění, tam kam chcete. (Já obvykle používám dva kontejnery - jeden na dialogové tělo a jeden na tlačítka na spodku okna.)
Podívejte se na následující příklad:
Vytvoření takového layoutu pomocí správce pack je možné, ale vyžaduje vytvoření několika extra udělátek Frame a mnoho starostí, aby věci vypadaly tak jak mají. Když místo něho použijete správce grid, budete volat pouze jednu metodu na každé udělátko a všechno bude, jak má být. V další sekci uvidíte, jak na to prakticky.
Poznámka: Nikdy nemíchejte grid a pack ve stejném rodičovském okně. Tkinter po zbytek vašeho života bude hledat řešení, které uspokojí oba dva správce. Namísto čekání aplikaci raději shoďte a znovu se podívejte na svůj kód. Běžná chyba je použití chybného rodiče pro některá udělátka.
Používá správce grid je snadné. Jednoduše vytvořte udělátka a použijte metodu grid a v ní řekněte správci, do kterého řádku a sloupce je má dát. Nemusíte předem určovat, jak velká mřížka má být. Správce si sám určí velikost podle udělátek v ní.
# -*- coding: utf-8 -*- from Tkinter import * rodic=Tk() rodic.option_add('*Font', 'Verdana 10') Label(rodic, text=u"První").grid(row=0) Label(rodic, text=u"Druhý").grid(row=1) e1 = Entry(rodic) e2 = Entry(rodic) e1.grid(row=0, column=1) e2.grid(row=1, column=1) mainloop()
Pokud není sloupec zadán, je standardně 0.
Prázdné řádky i sloupce jsou ignorovány. Výsledek by byl stejný, kdybyste umístili udělátka do řady 10 a 20.
Všimněte se, že udělátka jsou v buňkách mřížky centrována na střed. TOto chování můžete změnit, použijete-li parametr sticky, který může nabývat jedné nebo více hodnot z: N, S, E, W. Zarovnání doleva je tedy W (west - západ). Může být i více hodnot, např. sticky=N+W.
Label(rodic, text=u"První").grid(row=0, sticky=W) Label(rodic, text=u"Druhý").grid(row=1, sticky=W) e1 = Entry(rodic) e2 = Entry(rodic) e1.grid(row=0, column=1) e2.grid(row=1, column=1)
Udělátka mohou také překlenovat (span) několik buněk. Parametr columnspan se používá, pokud chceme, aby udělátko přesahovalo několik buněk a rowspan podobně, několik řádků. Následující kód vám vyrobí výše zobrazený layout::
# -*- coding: utf-8 -*- from Tkinter import * rodic=Tk() rodic.option_add('*Font', 'Arial 10') stitek1=Label(text=u"Váha") stitek1.grid(sticky=E) stitek2=Label(text=u"Výška") stitek2.grid(sticky=E) vstup1=Entry() vstup1.grid(row=0, column=1) vstup2=Entry() vstup2.grid(row=1, column=1) zaskrtavatko=Checkbutton(text=u"Zachovat poměr") zaskrtavatko.grid(columnspan=2, sticky=W) obrazek=PhotoImage(file="avatarGeon.gif") image = Label(image=obrazek) image.grid(row=0, column=2, columnspan=2, rowspan=2, sticky=W+E+N+S, padx=5, pady=5) button1=Button(text=u"Zvětšit") button1.grid(row=2, column=2) button2=Button(text=u"Zmenšit") button2.grid(row=2, column=3) mainloop()
Pár poznámek k tomuto příkladu:
# -*- coding: utf-8 -*- from Tkinter import * hlavni = Tk() w = Label(hlavni, text=u"Červená", bg="red", fg="white") w.grid(sticky=W+E) w = Label(hlavni, text=u"Zelená", bg="green", fg="black") w.grid(sticky=W+E) w = Label(hlavni, text=u"Modrá", bg="blue", fg="white") w.grid(sticky=W+E) hlavni.grid_columnconfigure(0,weight=1) mainloop()
Správce rozmístnění Grid. Toto je implementační třída. Grid geometry manager; všechny níže popsané metod jsou dostupné u všech udělátek.
Umístí udělátko do mřížky (grid) podle parametrů.
Například W (west) znamená, že udělátko bude zarovnáno k levému okraji buňky. W+E znamená, že udělátko bude roztahování tak, aby vždy vyplnilo celou buňku. W+E+N+S znamená, že udělátko bude roztahováno v obou směrech. Standard je udělátko vycentrováno v buňce bez automatického rozšiřování.
Metoda grid_bbox.
Nastavení parametrů pro sloupec buněk.
Chcete-li použít toto na určitou buňku, musíte tuto metodu volat na jejím rodiči.
Stejné jako grid.
Odebrat toto udělátko správci grid. Udělátko není zničeno, může být tak znovu zobrazeno správcem grid nebo jakýmkoliv jiným.
Vrací slovník obsahující současné parametry buněk u buňky, kterou okupuje aktuální udělátko.
Vrací buňku mřížky, která je pod nebo nejblíže zadanému pixelu.
Povoluje nebo zakazuje propagaci rozmístnění. Pokud je uvolněno, což je standard, správce Grid se vždy snaží změnit velikost udělátka, kdykoliv se změní velikost potomka.
Odebrat toto udělátko ze správce grid. Udělátko nebude zničeno, může být znovu zobrazeno správcem grid nebo jakýmkoliv jiným.
Nastavení parametrů pro řádku buněk.
Chcete-li použít toto na určitou buňku, musíte tuto metodu volat na jejím rodiči.
Vrací současnou velikost mřížky správce rozmístnění, který je připojen k tomuto udělátku. Velikost je definována jako indexy prvního prázdného sloupce a první prázdné řádky (v tomto pořadí).
Vrací seznam "potomků" spravovaných tímto udělátkem. Udělátka jsou vrácena ve formě referencí.
Přeložil a upravil - Pavel Kosina - Copyright © 2006 TkinterCZ - GNU Free Documentation License 1.2