[Tutor PyCZ] ještě seznam jako globální proměnná
Jan Šimůnek
jsim na med.muni.cz
Středa Březen 28 11:00:23 CEST 2007
Děkuji za odpověď
Dělám formulář, ve kterém je cca 70-100 OptionMenu. Formulář se vyplní výběrem
myší z přednastavených hodnot (tím je ohlídáno, že se tam nedostanou věcné
(odpověď mimo nabídnuté možnosti) nebo formální (např. číslo se dvěma
pozicemi za desetinnou tečkou, když je přednastavena jedna pozice) nesmysly.
Po odkliknutí stáhne příslušná funkce nastavené hodnoty, přežvýká je (v zásadě
spojí do stringu, ale nad některými údaji ještě provede výpočet a jeho
výsledek převede na string přednastavené délky a s přednastavenou pozicí
desetinné tečky) a uloží spolu s DOSovským koncem řádku (výsledky bude
zpracovávat - statistika - DOSovský program, jehož vkládací interface je
jinak hrozné).
Takže mám spoustu položek typu:
polozkaOM18=OptionMenu(ram3,polozka18,"A","B","C","x")
polozkaOM18.grid(row=16,column=1)
V jakési nulté verzi, kterou jsem tu před časem konzultoval, jsem měl na
začátku programu sloupec:
...
polozka0=StringVar()
...
polozka18=StringVar()
polozka18.set("x")
...
polozka100.set("x")
...
a v záhlaví funkce uloz sáhdlouhý výčet všech proměnných z OptionMenu
global polozka0
...
global polozka18
...
global polozka100
...
Teď jsem zjistil, že se dá udělat něco jako
polozka=[]
for i in range(100)
polozka.append(StringVar())
polozka[x].set("x")
a že to funguje,
a teď bych více-méně potřeboval něco podobného do záhlaví té funkce uloz, aby
se tam pokud možno nemusel vypisovat celý seznam položka po položce.
Proto by mi více-méně pomohlo, zda je seznam implicitně globální záležitost,
případně zda se musí nějak jako globální definovat a s jakou syntaxí.
Nějaké volání funkce uloz po vyplněn í jednotlivých položek by mi patrně moc
nepomohlo, protože jednotlivá OptionMenu na sebe vzájemně nevidí, pokud
jejich proměnné nejsou nastaveny jako global. Navíc je formulář udělaný tak,
aby po uložení hodnoty v OptionMenu zůstaly, protože dotazníky, které se do
něj vkládají, jsou často podobné a dobrá třetina (někdy i polovina)
vyplněných kolonek se dá při vyplňování následujícího dotazníku přeskočit,
protože tam zůstává předchozí hodnota, což šetří čas.
S pozdravem
Jan Šimůnek
Další informace o konferenci Tutor