James Stroud wrote: > 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. >> > > I overlooked this latter question. > > Probably, your naming confusion above with self.prefs and the resulting > errors obscure your intention. But, were I to keep a dictionary of > StringVars for prefs, I would initialize it in this manner: > > # somewhere in self > defaults = { > 'interface' : '-en1', > 'verbose' : '-v', > 'fontname' : 'Courier', > 'point' : 12 > } > self.prefs = dict((d,StringVar()) for d in defaults) > for d in defaults: > self.prefs[d].set(defaults[d]) > > Note, of course, that you will need to access 'point' like this if you > want it back as an int: > > int(self.prefs['point'].get()) > > Because StringVars return strings from their get() method. > > James > Thanks, these snippets helped me work this out.
-- Kevin Walzer Code by Kevin http://www.codebykevin.com -- http://mail.python.org/mailman/listinfo/python-list