[Tutor] Raiobutton question
Danny Yoo
dyoo@hkn.eecs.berkeley.edu
Sun, 11 Feb 2001 04:09:55 -0800 (PST)
On Sun, 11 Feb 2001, Glen Wheeler wrote:
> var = IntVar()
[some code omitted]
> root = Tk()
> I don't know why I get this error
> Traceback (most recent call last):
[cut]
> AttributeError: 'None' object has no attribute 'tk'
> It is almost verbatim from J Grayson's book.
The problem is that when we construct an InvVar(), Tk expects us to have a
root window already set up. The line:
root = Tkinter.Tk()
initializes _tk to something that all other widgets will depend
on. So, when we do something like:
###
root = Tkinter.Tk()
button = Tkinter.Button()
###
in the background, the Button() knows that it should connect up with root,
because the _tk variable's initialized.
Going back to your program, the IntVar definition is a bit too early;
IntVar doesn't know where to attach to until we either make a root window.
Try putting it after your Tk() call, and you should be ok.
> Also, I'd like to know how to fix errors such as these if they come up
> in the future - this is the first time I have seen one like this.
To tell the truth, I have no clue what an InvVar is. But if you ever see
something that says "_Tk is undefined", it's probably because a Tk()
instance hasn't been built yet.
(Someday, I shall have to take a look at "Python and Tkinter Programming",
and really understand what's happening... *grin*)
Good luck!