"John Fouhy" <[EMAIL PROTECTED]> wrote
To get around it, you need to supply your handlers with a reference
to
the Frame object. I guess you could try something like this:
### handlers.py ###
def handleCheckButton(obj):
def handler():
obj.doNotSend = obj.var.get()
if obj.doNotSend:
print '\nChecked'
else:
print '\nNot checked'
return handler
### main code ###
c = Checkbutton(
master,
text='Check if yes',
variable=self.var,
command=handlers.handleCheckButton(self)
)
###
There is a simpler way using lambdas:
### handlers module ###
def handler(obj):
obj.doNotSend = obj.var.get()
if obj.doNotSend:
print '\nChecked'
else:
print '\nNot checked'
### main code ###
c = Checkbutton(
master,
text='Check if yes',
variable=self.var,
command=lambda : handlers.handler(self)
)
I think moving some of your class functionality out to another
module could easily confuse people..
This is key. In general it is better to keep the handlers in the
class.
However the handlers should be quite short. If they need to manipulate
data etc then that should be in a separate method/function which
should be in a separate module. Event handlers typically manipulate
GUI widgets. Adding data for display, extracting data from dialog
fields,
greying/ungreying menu items and buttons etc. Any manipulation of
the data should be delegated to the model classes that represent the
core objects in the application. These models are the ones that
should exist in other modules.
HTH,
--
Alan Gauld
Author of the Learn to Program web site
http://www.freenetpages.co.uk/hp/alan.gauld
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor