On Fri, Oct 31, 2008 at 4:16 PM, <[EMAIL PROTECTED]> wrote: > This problem involves a callback method while using 'bind'. The bind > statement and the callback function are both in a module imported to the main > program. Relevant code snippets are as follows: > > #++++ begin snippet > > # main code > <code> > import module_Editor > . > class MyClass(): > <code> > def editor(self): > > module_Editor.my_Editor(self,self.frameParent) > <code> > # end of main code > > # module 'module_Editor' > <imports> > def my_Editor(self,parentFrame):
This is confusing. Is my_Editor() part of a class? If not, why does it take a self parameter? > <code> > self.textMyCode.bind( > "<KeyPress-Return>", > handlerTextLineNumbersReturn(self) Presumably you are using Tkinter? Note that you are calling handlerTextLineNumbersReturn() here. I would expect a TypeError here because you only pass one argument. Normally the second argument to bind() is a function, not a call to a function. > ) > <code> > def handlerTextLineNumbersReturn(self,event): > def temp(): > > print '\n** In handlerTextLineNumbersReturn' > > return temp I don't understand why you define and return another function here. Normally an event handler does not return a value. > <code> > # end of module 'module_Editor' > > # ++++ end snippet > > When the bind callback handler is called, the following error is returned: > > ++++ begin error > Exception in Tkinter callback > Traceback (most recent call last): > File "c:\Python251_102507\lib\lib-tk\Tkinter.py", line 1403, in __call__ > return self.func(*args) > TypeError: tempDef() takes no arguments (1 given) What is tempDef() ? > > ++++ end error > > The above approach works for widgets in the module calling callback handlers > that return a def like the above, but bind statements apparently do not like > this approach for some reason. Can you give an example of what you are doing that works? > Any ideas on what I'm doing wrong here? Maybe a "*args" needs to go somewhere > in the calling or def statements? If so, where does it go? The code seems a bit confused. I don't understand what you are trying to do. Possibly what you want is this: def my_Editor(self,parentFrame): <code> self.textMyCode.bind( "<KeyPress-Return>", handlerTextLineNumbersReturn ) <code> def handlerTextLineNumbersReturn(event): print '\n** In handlerTextLineNumbersReturn' Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor