Configuration Files and Tkinter--Possible?

W. eWatson notvalid2 at sbcglobal.net
Wed Mar 4 09:12:50 EST 2009


Gabriel Genellina wrote:
> En Wed, 04 Mar 2009 03:13:43 -0200, W. eWatson <notvalid2 at sbcglobal.net> 
> escribió:
> 
>> I'm converting a Tkinter program (Win XP) that uses widgets that 
>> allows the user to change default values of various parameters like 
>> start and stop time in hh:mm:ss, time of exposure in seconds, and 
>> whether certain options should be on or off. The initial values are 
...
> don't have to "track" changes to the variables (by example, a "zoom" 
> slider might provide feedback by zooming the image).
> So in the "Options..." menu item in your application, you:
> 
>     - create the dialog with the required widgets.
>         - call a method .setvalues(config) which receives a config 
> object with all the settings, and assigns them to each corresponding 
> widget.
>         - have a method .getvalues(config) that does the inverse 
> operation: from widget contents into the config object.
>         - display the dialog (you must use a modal loop; see 
> http://effbot.org/tkinterbook/tkinter-dialog-windows.htm ). If you use 
> tkSimpleDialog, make sure the .apply() method calls .getvalues
>     - on exit, the config object contains the final values.
> 
That's fine, but I think my problem boils down to one question. There seem 
to be two ways to communicate with a dialog (I mean a collection of widgets 
assembled in a window that requires the user enter various parameters, 
integers, strings, yes/no button, etc.): 1. a callback and 2. control 
variables. Which one should be used?

To be more explicit, look at this code from your source above 
<http://effbot.org/tkinterbook/entry.htm>. (This is about the simplest 
"dialog" one can have.) :
======================start
from Tkinter import *

master = Tk()
e = Entry(master)
e.pack()
e.focus_set()
def callback():
     print e.get()
b = Button(master, text="get", width=10, command=callback)
b.pack()
mainloop()
=======================end
Note that above this example, the author mentions:
"You can also bind the entry widget to a StringVar instance, and set or get 
the entry text via that variable:

v = StringVar()
e = Entry(master, textvariable=v)
e.pack()

v.set("a default value")
s = v.get()
"
Why have two ways of doing this?


-- 
                                W. eWatson

              (121.015 Deg. W, 39.262 Deg. N) GMT-8 hr std. time)
               Obz Site:  39° 15' 7" N, 121° 2' 32" W, 2700 feet

                     Web Page: <www.speckledwithstars.net/>




More information about the Python-list mailing list