python - pynput.keyboard 侦听器在 macOS 上失败
问题描述
我只是想制作一个简单的键盘监听器,它可以打印我按下的任何键(pynput.keyboard.Listener)。这是我的代码:
from pynput.keyboard import Listener
def on_press(k):
print(k)
with Listener(on_press=on_press) as lis:
lis.join()
但是,当我运行它时,它什么也不做。所以我按CTRL+C并显示以下错误:
Traceback (most recent call last):
File "/Users/me/Desktop/py/KeyLogger/keylogger.py", line 8, in <module>
lis.join()
File "/usr/local/lib/python3.7/site-packages/pynput/_util/__init__.py", line 252, in join
super(AbstractListener, self).join(*args)
File "/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 1044, in join
self._wait_for_tstate_lock()
File "/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 1060, in _wait_for_tstate_lock
elif lock.acquire(block, timeout):
KeyboardInterrupt
这里使用 anaconda/Python3.8 而不是 Python3.7:
Traceback (most recent call last):
File "/Users/me/Desktop/py/KeyLogger/keylogger.py", line 8, in <module>
lis.join()
File "/Users/me/opt/anaconda3/lib/python3.8/site-packages/pynput/_util/__init__.py", line 252, in join
super(AbstractListener, self).join(*args)
File "/Users/me/opt/anaconda3/lib/python3.8/threading.py", line 1011, in join
self._wait_for_tstate_lock()
File "/Users/me/opt/anaconda3/lib/python3.8/threading.py", line 1027, in _wait_for_tstate_lock
elif lock.acquire(block, timeout):
KeyboardInterrupt
似乎错误是当我告诉听众开始时。我一直在寻找类似的问题(主要是线程和 join() 问题),但我还没有找到我的问题的答案。¿ 这可能是一个pynput问题吗?
谢谢。
解决方案
推荐阅读
- vue.js - Vuepress 运行构建的项目
- php - 查询多次给出相同的结果
- html - 如何为子标签定义一个类?
- swiftui - How we can draw a stroke for a custom path in SwiftUI?
- python - 从文本文件中读取值,然后将每个值添加到附加到列表中的 dict
- javascript - 指挥限制
- python - 我需要使用来自 AWS GLUE 的 ETL 和 python 从 SQL Server 数据库中提取信息
- javascript - Javascript 检查函数,如果它是直接调用的还是从对象调用的
- django - django 计算模型中的实例
- python - 为什么这段代码的输出只取列表的 3 个值?