Python 来自pynput的键盘侦听器
我正在尝试将键盘侦听器导入到我的类中,但不断得到一个Python 来自pynput的键盘侦听器,python,keyboard,Python,Keyboard,我正在尝试将键盘侦听器导入到我的类中,但不断得到一个 NameError: name 'on_press' is not defined 这是我的密码: from pynput import keyboard class game_code: with keyboard.Listener(on_press=on_press) as listener: listener.join() def check_key_press(self,key):
NameError: name 'on_press' is not defined
这是我的密码:
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
也不是100%确定with语句是如何工作的。我使用了他们在线文档的格式:
我使用了他们在线文档的格式:
我将侦听器粘贴到我的类代码中,仍然得到一个NameError。但是,当在类之外的其他模块中运行时,它工作正常。这和在课堂上使用这个有什么关系吗?在我这方面很好。我在这里用。从课堂上拿出来试试。这可能是因为你没有像我上面所说的那样在新闻界下定义。它需要一个定义函数。我将侦听器粘贴到我的类代码中,但仍然得到一个NameError。但是,当在类之外的其他模块中运行时,它工作正常。这和在课堂上使用这个有什么关系吗?在我这方面很好。我在这里用。从课堂上拿出来试试。这可能是因为你没有像我上面所说的那样在新闻界下定义。它需要一个定义函数
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()