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