Úvod do Tkinter - Okna pro jazyk Python - Postavené na základech 'An Introduction to Tkinter'

Konfigurace udělátek

Chcete-li měnit vzhled  již vytvořeného udělátka, používejte raději parametry (options) než volání metod. Běžné parametry umožňují měnit text a barvu, dále velikost, volanou funkci, apod. Všechny základní udělátka mají implementováno stejné konfigurační rozhraní pro zacházení s parametry:

Konfigurační rozhraní

TridaUdelatka(rodič, parametr=hodnota, ...) => udělátko

(kde TridaUdelatka je jedna z tříd zmíněné dříve)

Vytvoří instanci této třídy udělátka jako potomka daného rodiče při použití daných parametrů. Všechny parametry mají standardní hodnoty, takže v nejjednodušším případě musíte určit pouze rodiče. Můžete dokonce vypustit i toho, pokud skutečně chcete; Tkinter pak použije jako rodiče naposledy vytvořené hlavní okno. Parametr name se může nastavit jen při vytvoření udělátka.

cget("parametr") => hodnota

Vrací současnou hodnotu parametru. Jak název parametru, tak vrácená hodnota, jsou řetězce. Chcete-li získat parametr name, použijte str(widget).

config(parametr=hodnota, ...)

configure(parametr=hodnota, ...)

Nastaví jeden nebo více parametrů (zadané jako pojmenované argumenty).

Poznámka: některé názvy parametrů kolidují s názvy klíčových slov v Pythonu. Potřebujete-li použít tyto jména jako pojmenované argumenty, přidejte jednoduše na konec slova podtržítko(class_, from_, ...). Opakuji: parametr name měnit nemůžete, ten se dá nastavit jen jednou a to při vytvoření udělátka.

keys() => seznam

Vrací seznam všech parametrů, které se dají u příslušného udělátka nastavit. Samozřejmě kromě parametru name.

Použití slovníku

Kvůli pohodlí udělátka mají implementování přístup k parametrům přes lokální slovník. Metoda __setitem__ je spojena s configure, zatímco  __getitem__ je nastavena na cget. Výsledkem tohoto triku je pohodlnější přístup k parametrům, a to jak pro čtení tak pro zápis:

hodnota = widget["parametr"]
widget["parametr"] = hodnota

Poznámka: každé takovéto přiřazení způsobí volání příslušné funkce v Tk. Chcete-li tedy měnit vícero parametrů je vždy lepší udělat to v jednom volání pomocí  config nebo configure.

Zpětná kompatibilita

Pojmenované argumenty byly představeny poprvé v Python 1.3. Předtím byly parametry předávány konstruktorům udělátek (stejně jako config metodám) pomocí slovníků. Zdrojový kód tedy vypadal tehdy takto:

self.tlacitko = Button(frame, {"text": "KONEC", "fg": "red", "command": frame.quit})
self.tlacitko.pack({"side": LEFT})

Syntaxe pojmenovaných argumentů je samozřejmě o mnoho elegantnější a způsobuje méně chybovosti. Nicméně z důvodů zpětné kompatibility Tkinter podporuje stále ještě i tuto starou syntaxi. Neměla by být však již v nových aplikacích používána., i když se to může někdy hodit. Například když potřebujete vytvořit specielní udělátko, které potřebuje předávat přijaté parametry své rodičovské třídě, mohlo by vás napadnout následující řešení:

def __init__(self, master, **kw):
    Canvas.__init__(self, master, kw) # kw je slovnik

Fredrik Lundh doporučuje v originále této dokumentace používat místo tohoto řešení funkci apply. Ta se však později objevila na seznamu zavrženíhodných v dalších (Python 3.0) verzích Pythona. Takže jen pro úplnost možnost řešení s  apply:

def __init__(self, master, **kw):
    apply(Canvas.__init__, (self, master), kw)


Přeložil a upravil - Pavel Kosina - Copyright © 2006 TkinterCZ - GNU Free Documentation License 1.2