Home > Mobile >  Passing arguments into a callback function
Passing arguments into a callback function

Time:07-07

I'm currently writing a Python program using Tkinter. In it, I want to trace the text within several entry boxes. Is there anyway I can pass parameters into the callback function that I call within the trace method? For example:

def cb(*args, var):
        do something 

some_object.trace("w", cb(var=some_var))

when I try this, I get a None Type error, which I'm assuming is because of how I'm attempting to pass in the argument.

CodePudding user response:

You're calling the function immediately, and passing its return value as the callback argument, not passing the function as a callback.

Use lambda to create a function that calls the function with an extra argument.

some_object.trace("w", lambda *args: cb(*args, var=some_var))

You can also use functools.partial to create a function with some arguments pre-specified.

from functools import partial

some_object.trace("w", partial(cb, var=some_var))
  • Related