Это не называется без скобок; это передается в качестве аргумента без вызова. Параметр on_press
должен быть функцией, которая будет вызываться классом Listener
; код для этого класса будет иметь что-то вроде on_press(key)
для вызова функции, которую вы предоставляете, с одним аргументом.
Поскольку передаваемая вами функция будет вызываться с одним аргументом, вам нужно предоставить функцию, которая (1) принимает key
в качестве аргумента и (2) вызывает on_press(key, string)
с этими двумя аргументами. Одним из решений является использование ключевого слова lambda
:
on_press_func = lambda key: on_press(key, string)
with keyboard.Listener(on_press=on_press_func) as listener:
listener.join()
Вы также можете написать лямбда-функцию таким образом, чтобы сразу связать значение string
вместо закрытия над ним :
on_press_func = lambda key, string=string: on_press(key, string)