Как передать аргументы функции on_press слушателя pynput? - PullRequest
1 голос
/ 18 января 2020

Я создал минимальную 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')
...