[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