[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