Tkinter, StringVar and dict
James Stroud
jstroud at mbi.ucla.edu
Wed Dec 20 20:14:14 EST 2006
Kevin Walzer wrote:
> I'm trying to manage user preferences in a Tkinter application by
> initializing some values that can then be configured from a GUI. The
> values are set up as a dict, like so:
>
> self.prefs= {
> 'interface': '-en1',
> 'verbose': '-v',
> 'fontname': 'Courier',
> 'point': 12,
> }
>
> To link these values to the appropriate Tkinter variables, I'm using
> code like this:
>
> self.prefs['interface'] = StringVar()
> self.prefs['interface'].set("-en0") # initialize
>
> This raises an error in Tkinter:
>
> Exception in Tkinter callback
> Traceback (most recent call last):
> File
> "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/Tkinter.py",
> line 1403, in __call__
> return self.func(*args)
> File "/Users/kevin/Programming/packetstream/packetstream-classes.py",
> line 293, in setPrefs
> self.prefs['interface'] = StringVar()
> File
> "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/Tkinter.py",
> line 3237, in __setitem__
> self.tk.call(self.name, 'configure', '-'+key, value)
> TclError: unknown option "-interface"
>
> Can someone help me smooth this out--to get dict key-values into a
> Tkinter variable like StringVar()?
>
> Thanks.
>
Actually, even more succinctly:
# somewhere in self
defaults = {
'interface' : '-en1',
'verbose' : '-v',
'fontname' : 'Courier',
'point' : 12
}
self.prefs = dict((d,StringVar(value=v)) for (d,v) in defaults.items())
James
--
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095
http://www.jamesstroud.com/
More information about the Python-list
mailing list