On Fri, 25 Feb 2005 20:19:15 +1300
Liam Clarke <[EMAIL PROTECTED]> wrote:
> >
> > for i in range(0,10):
> > print i
> > buttonlabel = "field " +str(i)
> > button[i].append = Button (text=buttonlabel)
> > button[i].grid(column=3, row = i+3)
> >
> > The current error is:
> >
> > File "report.py", line 80, in createWidgets
> > button[i].append = Button (text=buttonlabel)
> > IndexError: list index out of range
> >
> button = []
> for i in range(0,10):
> print i
> print button[i]
>
>
> Will cause the exact same error as button[i].append. Why? button=[],
> it has no index.
> Perhaps you just mean button[i] = Button (text=buttonlabel)?
>
> Regards,
>
>
Or :
buttonlist = []
for i in range(0, 10):
print i
buttonlabel = "field" + str(i)
b = Button(text=buttonlabel)
b.grid(column=3, row=i+3)
buttonlist.append(b)
Remember what you are doing when you call "button[i].append =
Button(text=buttonlabel)":
button is a list of Tkinter.Button objects, so button[i] is the "i-th" item in
this list
and that's exactly one more than the list actually contains, so you get an
IndexError .
However, if this IndexError wouldn't occur, it didn't help much, because you
would
probably get an AttributeError, saying something like "Tkinter.Button instance
has no attribute 'append'".
Even without this AttributeError nothing would be won, because the list's
append() method returns None,
so you would have: None = Button(text=buttonlabel) which is probably not what
you intended.
You see, in my example above I called the list "buttonlist" instead of
"button"; maybe this naming
helps avoid confusion .
Best regards
Michael
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor