seanacais wrote: > 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
You misunderstood. There is no such thing as a "tk type". Whether you use from Tkinter import * or import Tkinter as tk is irrelevant for the problem at hand. > 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 You have to ensure that the lines from Tkinter import * root = Tk() are *executed* before the line dname = dict((d, StringVar()) for d in OPDefaults) While I prefer the alternative import Tkinter as tk root = tk.Tk() # ... dname = dict((d, tk.StringVar()) for d in OPDefaults) this is just a matter of style. Peter PS: If you still can't fix your script, please post it completely or, better, a small self-contained (runnable) script showing the same problem -- http://mail.python.org/mailman/listinfo/python-list