Úvod do Tkinter - Okna pro jazyk Python - Postavené na základech 'An Introduction to Tkinter'
Správce rozmístnění Pack pakuje udělátka do řádků a sloupců. S ním můžete používat volby jako fill, expand a side, pomocí kterých tohoto správce řídíte.
Tento správce obsluhuje všechna udělátka, která se skládají uvnitř stejného rodičovského. Algoritmus skládání je jednoduchý, nicméně se těžko slovy popisuje. Představte si list nějakého elastického látky s velmi malou čtvercovou dírou uprostřed. U každého udělátka, v pořadí jak se skládají, tento správce rozmístění zvětší dostatečně díru, aby se tam udělátko vešlo a pak ho položí k zadané vnitřní hraně (defaultní je horní hrana). Tento proces se pak opakuje pro všechna udělátka. Když jsou všechna udělátka umístěna v díře, správce spočítá orámování pro všechna udělátka, učiní rodičovské udělátko dostatečně velkým, aby se do něj všechna udělátka vešla a vše postoupí rodiči.
Správce Pack je v porovnání se správcem Grid trochu limitovaný, ale snadněji se používá v několika běžných situacích:
Potřebujete-li vytvořit sofistikovanější design, budete muset obvykle seskupovat skupiny udělátek do dalších Framů. Také můžete v těchto případech používat správce grid.
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.
Běžná situace: potřebujete pouze umístit udělátko do kontejnerového udělátka tak, aby vyplnilo celý jeho obsah. Zde je jednoduchý příklad: Rozbalený seznam (listbox) umístěn v hlavním okně.:
from Tkinter import * hlavni = Tk() listbox = Listbox(hlavni) listbox.pack() for i in range(20): listbox.insert(END, str(i)) mainloop()
Standardně je listbox velký asi tak na zobrazení 10-ti položek. Tento jich však obsahuje dvakrát více. Pokud se ale pokusí uživatel je zobrazit pomocí zvětšení okna, Tkinter přidá výplň kolem listboxu:
Přidejte parametry fill a expand, chcete-li docílit, aby udělátko vždy, i při zvětšování okna, vyplňovalo celý rodičovský element:
from Tkinter import * hlavni = Tk() listbox = Listbox(hlavni) listbox.pack(fill=BOTH, expand=1) for i in range(20): listbox.insert(END, str(i)) mainloop()
Parametr fill říká správci, že udělátko chce vyplnit celý prostor, který má k dispozici. HOdnota určuje jak prostor vyplňovat: BOTH značí, že udělátko chce expandovat jak vodorovně tak svisle; X značí, že se chce expandovat jen horizontálně a Y jen svisle.
Parametr expand říká správci, aby přiděloval dodatečný prostor udělátku. Pokud se rodičovský widget zvětší, nadbytečný prostor se rozdělí mezi všechny udělátka, které mají parametr expand nastaven na nenulovou hodnotu.
Použijte pack bez jakéhokoliv parametru, chcete-li umístit několik udělátek do jednoho sloupce:
# -*- coding: utf-8 -*- from Tkinter import * hlavni = Tk() w = Label(hlavni, text=u"Červená", bg="red", fg="white") w.pack() w = Label(hlavni, text=u"Zelená", bg="green", fg="black") w.pack() w = Label(hlavni, text=u"Modrá", bg="blue", fg="white") w.pack() mainloop()
Použijte parametr fill=X chcete-li mít všechna udělátka stejně široká jako rodiče.
# -*- coding: utf-8 -*- from Tkinter import * hlavni = Tk() w = Label(hlavni, text=u"Červená", bg="red", fg="white") w.pack(fill=X) w = Label(hlavni, text=u"Zelená", bg="green", fg="black") w.pack(fill=X) w = Label(hlavni, text=u"Modrá", bg="blue", fg="white") w.pack(fill=X) mainloop()
Používejte parametr side, chcete-li umístit udělátka vedle sebe. Chcete-li navíc, aby byly udělátka stejně vysoká jako rodič, použijte také parametr fill=Y :
# -*- coding: utf-8 -*- from Tkinter import * hlavni = Tk() w = Label(hlavni, text=u"Červená", bg="red", fg="white") w.pack(side=LEFT) w = Label(hlavni, text=u"Zelená", bg="green", fg="black") w.pack(side=LEFT) w = Label(hlavni, text=u"Modrá", bg="blue", fg="white") w.pack(side=LEFT) mainloop()
Správce rozmístění Pack. Toto je implementační třída; všechno níže uvedené metody jsou dostupné pro všechny widgety.
Složí udělátko tak, jak je určeno parametry.
Stejné jako pack.
Vyjme udělátko z aktuálního správce - udělátko není zničeno - může se znovu zobrazit pomocí pack nebo jiného správce.
Vrací slovník obsahující aktuální parametry správce.
(Metoda správce) Řídí propagaci geometrie. Pokud je povoleno, změní se velikost rodiče tak, aby se do něj vešly všichni potomci - udělátka.
Tato metoda by se měla volat na rodičovské udělátko, ne na jednotlivé potomky - udělátka.
(Metoda správce) Vrací seznam všech potomků ("slave") spravovaných tímto správcem u tohoto rodiče.
Tato metoda by se měla volat na rodičovské udělátko, ne na jednotlivé potomky - udělátka.
Přeložil a upravil - Pavel Kosina - Copyright © 2006 TkinterCZ - GNU Free Documentation License 1.2