来自 pynput 的键盘监听器

Gar*_*y I 2 python keyboard

我正在尝试将键盘侦听器导入到我的班级中,但不断收到

NameError: name 'on_press' is not defined
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

from pynput import keyboard
class game_code:

    with keyboard.Listener(on_press=on_press) as listener:
        listener.join()

    def check_key_press(self,key):
       try: k = key.char
       except: k = key.name

       if k in ['up', 'down', 'left', 'right']:
          self.key = keys.append(k)
          return True

        else:
          return False
Run Code Online (Sandbox Code Playgroud)

也不能 100% 确定 with 语句如何工作。

cle*_*t66 9

我使用他们在线文档的格式让它工作:

https://pythonhosted.org/pynput/keyboard.html

from pynput.keyboard import Key, Listener

def on_press(key):
    #print('{0} pressed'.format(
        #key))
    check_key(key)

def on_release(key):
    #print('{0} release'.format(
       # key))
    if key == Key.esc:
        # Stop listener
        return False

def check_key(key):
    if key in [Key.up, Key.down, Key.left, Key.right]: 
        print('YES')

# Collect events until released
with Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()
Run Code Online (Sandbox Code Playgroud)