Looking for a General Method to Configure Tkinter Widgets

W

W. eWatson

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

odeits

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

W. eWatson

odeits said:
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/>
 
W

W. eWatson

W. eWatson said:
odeits said:
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.
I've been told that there may be another way to communicate with Tkinter
than control variables. I'm not quite sure what, but will probably know
tomorrow. I think I will discontinue this thread, and re-post if necessary.



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

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,743
Messages
2,569,478
Members
44,898
Latest member
BlairH7607

Latest Threads

Top