[python] problém s Tk
geon
geon na post.cz
Čtvrtek Červenec 14 12:04:24 CEST 2005
Vita Titl napsal(a):
>Vytvářím zaškrtávací políčka a nevím kolik jich bude, počet načítám ze seznamu, tedy zdroj vypadá nějak takto:
>a=0
>policka = ["policko1", "policko2", "policko3", "atd"]
>while 1:
> try:
> ch = Checkbutton(okno, text=policka[a])
> ch.pack()
> a=a+1
> except:
> break
>
>Můj problém: nevím jak potom přistupovat k hodnotám, které nabývá Checkbutton?
>Můžete mi poradit?
>
>
>
Asi jde i řešení ch.cget(...) - viz manuál, ale Tkinter to spíše řeší
tak, že si pro kařdý Button zavede proměnnou, která pak nabývá stavů
podle zaškrtnutí a funguje i zpětně, že když změníš proměnou, tak se
změní políčko.
To use a Checkbutton, you must create a Tkinter variable:
var = IntVar()
c = Checkbutton(master, text="Expand", variable=var)
Takže v tom cyklu bych udělal něco jako:
butt=[]
for a in range(len(policka)):
var=IntVar()
butt.append(var)
ch = Checkbutton(okno, text=policka[a], variable=var)
ch.pack()
No a k hodnotám pak přistupuješ:
hodnota=butt[x].get()
butt[x].set(1)
Pokud budeš chtít ale měnit i button (text, nebo ho nechat zmizet),
musíš si podobně schovávat i ch, třebas takto:
If you need to keep track of both the variable and the widget, you can
simplify your code somewhat by attaching the variable to the widget
reference object.
v = IntVar()
c = Checkbutton(master, text="Don't show this again", variable=v)
c.var = v
--
geon
Vyjímka je pravidlo. Rekurzivní.
Další informace o konferenci Python