[Tutor PyCZ] Tkinter - promenny pocet widgetu

geon geon na post.cz
Sobota Únor 11 22:16:34 CET 2006


michal na kandrac.net napsal(a):
> Ahoj.
> Tak jsem na tom popracoval, z casti uz to dela co bych chtel - pocet 
> rout se meni podle promenne routyPocet. Nicmene ted nedokazu udelat 
> to, aby se dal jejich pocet menit za chodu smycky hlavniho okna. 
> Tusim, ze to bude jednoduche, ale moje znalosti zatim jaksi 
> nepostacuji. Prosim jeste jednou o radu. Napadlo me, ze bych mohl 
> celou tu cast, ve ktere se vytvareji widgety pro routy umistit dovnitr 
> funkce zmenPocet, ale nezda se mi to jako dobra myslenka. Tak se 
> radeji zeptam :-).
>
>
> def zmenPocet():
>     global routyPocet
>     routyPocet = int(volbaPoctuRout.get())
>     print routyPocet
>
>
> for x in range(routyPocet):
>     var=StringVar()
>     routaSit=Entry(root, textvariable=var, width = 14)
>     routaSit.grid(row = 2 + range(routyPocet).index(x), column = 1)
>     routySitVar.append(var)
>
> for x in range(routyPocet):
>     var=StringVar()
>     routaMaska=Entry(root, textvariable=var, width = 14)
>     routaMaska.grid(row = 2 + range(routyPocet).index(x), column = 2)
>     routyMaskaVar.append(var)
>
> for x in range(routyPocet):
>     var=StringVar()
>     routaKam=Entry(root, textvariable=var, width = 14)
>     routaKam.grid(row = 2 + range(routyPocet).index(x), column = 3)
>     routyKamVar.append(var)
>   
Budeš muset tu část, kde se Routy (co co vlastně je ta Routa? :-) ) 
vytvářejí, umísnit do funkce. A tuto fukci volat jednak při prvním běhu 
a jednak při každém zavolání funkce zmenPocet(). Tam navíc musíš 
zajistit smazání všech dosavadních Entry (procházet je v poli a použít 
metodu ....grid_remove? nebo dokonce destroy ? ) A nebo to celé umístnit 
do Framu a nechat ničit najednou cely Frame.

Bacha na to že, že z globálních proměnných se v té nové funkci stanou 
lokální proměnné a na to, že tam máš defacto natvrdo 3 sloupce. To budeš 
muset udělat cyklem, abys to mohl dynamicky měnit, pokud tedy sloupce 
nemají zůstávat pořád tři. Pak by se asi nemuselo vše mazat , jak jsem 
psal v minulém odstavci, ale je si pamatovat, kolik tam bylo řad a 
mazat/přidávat jen 3 widgety. A nebo zase si celou řadu dávat do Framu a 
mazat cely Frame.

-- 
geon
Vyjímka je pravidlo. Rekurzivní.



Další informace o konferenci Tutor