运行Python键盘监听代码报错NameError: name 'Listener' is not defined如何解决
错误触发原因
- 你代码中使用的
Listener类、Key枚举类都属于第三方库pynput的keyboard子模块,代码开头没有导入这两个对象,Python解释器无法识别对应的名称,因此抛出NameError: name 'Listener' is not defined - 除了导入问题外,你的代码还存在3处隐藏语法/逻辑错误:
- 打印语句的格式化占位符写为了
(0),正确写法是{0},否则无法正常输出按键内容 - 实例化
Listener时传入的释放回调参数名写为了on_Release,首字母大写不符合参数定义,会导致释放按键的回调无法触发 format和括号之间多了不必要的空格,虽然不会直接报错但不符合Python编码规范
- 打印语句的格式化占位符写为了
解决步骤
- 若未安装依赖库,先执行安装命令:
pip install pynput - 修正代码的导入语句和所有语法问题,完整可运行代码如下:
from pynput.keyboard import Key, Listener def on_press(key): print("{0} pressed".format(key)) def on_release(key): if key == Key.esc: # 按下ESC键时停止监听 return False with Listener(on_press=on_press, on_release=on_release) as listener: listener.join()
内容的提问来源于stack exchange,提问作者coldixi
相关产品推荐
相关产品推荐

