Suggestions wanted on Tkinter problem
Dave Angel
davea at ieee.org
Thu Apr 16 23:08:25 EDT 2009
norseman wrote:
> <div class="moz-text-flowed" style="font-family: -moz-fixed">One
> suggested I change the subject line - OK
> I also replaced the [TAB]s since I noticed the Emailer seems
> to get very confused with them.
>
>
>
> Problem:
> Using Python 2.5.2 and Tkinter ??? (came with system)
> List made and for loop in use
> lst=[ ("S", "Single"), .....]
>
> for mode, text ....
> c = Radiobuton(.....
> c.pack()
>
> At this point the program runs, but I cannot control gray-out of a
> specific Radiobutton.
>
> If I:
>
> counter=0
> for mode, text ....
> c[counter] = Radiobuton(specified_frame,..
> c[counter].pack()
> counter += 1
> .
> .
> blockUseOf= $varSetElsewhere
> c[blockUseOf].config(state = strSetElsewhere)
>
> Program crashes on Radiobutton line.
>
> There are a number of Frames containing Radiobuttons in the program.
> The individual lists are long enough no one in their right mind wants to
> hand code such repetition and then try to maintain it. Not even with a
> code generator. (Number and organization will change over time.)
> How do I set things to be able to control any given Radiobutton from
> elsewhere in the program and still use the for-loop loader?
>
>
> Steve
>
>
>
> </div>
>
Try posting as text. The html tags in the message are distracting.
I don't know tkinter, but I can see a problem with your code. You're
using the [] operators on c, but you never initialize c. Of course, you
have a tiny fragment of code, and we're supposed to guess the rest. But
normally, when you build a list, you start with:
mylist = []
for xxxx in yyyy:
c = ....new widget....
mylist.append(c)
Now, c is just temporary, but mylist contains reference to all the
widgets. So later on, you can use mylist[42] to get button# 42.
A separate problem is that mylist should be a member of a class derived
from the frame widget, or something like that. So if this code is part
of an __init__ method of a class, there are a few "self" items needed.
More information about the Python-list
mailing list