On May 19, 2:11 pm, Peter Otten <[EMAIL PROTECTED]> wrote:
>
> There's some magic going on behind the scene which means that you have to
> create a Tkinter.Tk instance before you can start churning out StringVars:
>
> >>> import Tkinter as tk
> >>> v = tk.StringVar()
>
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "/usr/lib/python2.5/lib-tk/Tkinter.py", line 257, in __init__
>     Variable.__init__(self, master, value, name)
>   File "/usr/lib/python2.5/lib-tk/Tkinter.py", line 188, in __init__
>     self._tk = master.tk
> AttributeError: 'NoneType' object has no attribute 'tk'>>> root = tk.Tk()
> >>> v = tk.StringVar()
> >>> v.set(42)
> >>> v.get()
>
> '42'
>
> Peter


I had the Tkinter import as

from Tkinter import * but I changed it to

import Tkinter as tk

and modified the creation of the root object to

root=tk.Tk()

I then had to change every instance of Menu, Label,
Button, and all Tkinter elements to be prefaced by
tk.  (so Button became tk.Button).  That kind of makes
sense to me.

However even after specifying StringVar is a tk type

        def initOPValues(self, OPname, dname):

                OPDefaults = {
                        'Vval'  : 0,
                        'Ival'  : 0,
                        'Otemp' : 0
                }

                dname = dict((d,tk.StringVar()) for d in OPDefaults)
                for d in OPDefaults:
                                dname[d].set(OPDefaults[d])


I still get a very similar error message

C:\Code\gui>tkinter.py
Traceback (most recent call last):
  File "C:\Code\gui\tkinter.py", line 169, in <module>
    ps.initOPValues(c, OPValues[c])
  File "C:\Code\gui\tkinter.py", line 54, in initOPValues
    dname = dict((d,tk.StringVar()) for d in OPDefaults)
  File "C:\Code\gui\tkinter.py", line 54, in <genexpr>
    dname = dict((d,tk.StringVar()) for d in OPDefaults)
  File "C:\Python25\lib\lib-tk\Tkinter.py", line 254, in __init__
    Variable.__init__(self, master, value, name)
  File "C:\Python25\lib\lib-tk\Tkinter.py", line 185, in __init__
    self._tk = master.tk
AttributeError: 'NoneType' object has no attribute 'tk'
Exception exceptions.AttributeError: "StringVar instance has no
attribute '_tk'"
 in <bound method StringVar.__del__ of <Tkinter.StringVar instance at
0x00B7E418>> ignored


Thanks!

Kevin
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to