Обратный вызов принимает только то, что проходит код, вызывающий его (инструментарий GUI). Если вы хотите передать больше и не можете убедить этого вызывающего абонента передать что-то дополнительное, вам не повезло.
Но, к счастью, есть лазейка: вы можете передавать произвольные вызываемые объекты и создавать частичные функции, которые являются функциями, обертывающими другую функцию, запоминая дополнительные аргументы для передачи при вызове.
import functools
def callback(x, y):
return x + y
g = functools.partial(callback, y=3)
g(2) #=> 5
Есть несколько проблем со странными порядками аргументов (например, вы не можете легко вызывать партиал с позиционными аргументами, если первый аргумент был передан через аргумент ключевого слова), но ваш вариант использования (добавьте аргументы в конец списка аргументов) должен работатьпросто хорошо.Вам просто нужно использовать ключевые аргументы.