2008/9/29 <[EMAIL PROTECTED]>: > I am writing a large Python/Tkinter/Pmw program. It has become so big that I > would like to move some of the widget handlers to a module for import. The > following small program illustrates: > > # --- begin code --- [...] > c = Checkbutton( > master, > text='Check if yes', > variable=self.var, > command=self.handlerCheckButton, > ) [...] > def handlerCheckButton(self): > self.doNotSend=self.var.get() > if self.doNotSend: > print "\nChecked" > else: > print "\nNot checked" > > Is there no way to put handlers in a module and import them? Is 'self' > getting in the way?
Short answer -- yes. Well, I guess so -- if you posted the error message you're getting, I'd be able to say for sure. Essentially, you're trying to take the event handlers out of the class, but this is a problem because they refer to attributes of the class. 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) ) ### I think this would work, though I have not checked it. Whether it is a good idea, though, is another question. I think moving some of your class functionality out to another module could easily confuse people.. -- John. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor