Looking for a General Method to Configure Tkinter Widgets

W. eWatson notvalid2 at sbcglobal.net
Tue Mar 3 13:58:47 EST 2009


odeits wrote:
> On Mar 2, 7:14 am, "W. eWatson" <notval... at sbcglobal.net> wrote:
>> I'm modifying a Tkinter Python program that uses hard coded initial values
>> for several widgets. For example, latitude = 40. My plan is to put the names
>> and values for configuration purposes into a file. For example, a pseudo
>> statement like the one just given. ConfigObj provides a mechanism for it.
>>
>> I am only at an early stage of learning Tkinter, but it looks like a hang up
>> is in the use of control variables passed between widgets and non-Tkinter
>> objects that setup up the widget and retrieve the changed values. Roughly,
>> the main loop contains code like self.longitude = 40. Non-Tkinter objects
>> set up the parameters to the widgets, and when a widget* is complete the
>> setup program resets the main loop globals. As I see it, it looks like
>> IntVar, etc. used must be hard coded, as in the original program, to
>> preserve types like boolean, strings, integers, floats, etc. It's either
>> that or use of eval or some like function. Comments?
>>
>> * For example, in one setup program, I see code like this after its call to
>> a dialog returns:
>>
>>          try:
>>              s = dialog.stopVar.get()
>>              d = [ int(x) for x in s.split(":") ]
>>              self.stop_time = datetime.time(d[0],d[1],d[2])
>>
>> stop_time is a string like "10:30:15".
>> --
>>                                 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/>
> 
> I am sorry, I am a bit confused. Is your question how to preserve the
> value and/or type of the data in the config file? Or are you having
> trouble getting the values from the file to the widget?
I'm probably confused too. :-) Let's try this. In
	s=dialog.stopVar.get()
I'd like to eliminate the statement and replace it with something like:
	s="dialog." + "stopV.get()"
	    )and execute that--I'm aware of the exec operation--problems)
where StopV is a string name taken from the config file. That is, in the 
config file there would be something like:
stop_time = 18:00:00, stopV.

Initially, when starting the program, reading that line would create a 
self.stop_time variable with the value 18:00:00 (string). To communicate 
with the dialog widget where the user enters a new value, I need to use 
control variables. but ones that are not in the code itself. Instead, I 
would like to manufacture them from what I see in the config file.


-- 
                                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