Я создал минимальную pynput
программу, которая выполняет различные действия при нажатии клавиш со стрелками left
и right
. Я хочу превратить это в функцию, которая может принимать разные значения в качестве аргументов.
Вот минимальный рабочий пример без функции и без аргументов:
from pynput.keyboard import Key, Listener
def on_press(key):
print('{0} pressed'.format(key))
if key == Key.esc:
return False
with Listener(on_press=on_press) as listener:
listener.join()
Он печатает клавиша, которую вы нажимаете, и закрывается, когда вы нажимаете esc
.
И вот что я пытаюсь реализовать. Обратите внимание, что это не работает. Просто посмотрите на логи c. Когда нажата стрелка left
, я хочу, чтобы программа выполнила команду, которая зависит от заданного аргумента. И наоборот для стрелки вправо.
from pynput.keyboard import Key, Listener
def on_press(key, left, right):
if key == Key.left:
print("{}'s key was pressed.".format(left))
if key == Key.right:
print("{}'s key was pressed.".format(right))
if key == Key.esc:
return False
def activate(name1, name2):
with Listener(
on_press=on_press(key, left=name1, right=name2)) as listener:
listener.join()
# when pressed, the program should print what on_press() is given as argument
activate('Mark', 'John')