python - 简单的 Python 按键检测
问题描述
我正在寻找一种简单的方法来检测循环内的按键,而无需导入 pygame 之类的东西,类似于
pressed('a') #returns True if key 'a' pressed, False otherwise
我知道这个按键检测线程,但不幸的是,当我运行推荐的代码或使用keyboard.is_pressed()尝试任何事情时,我得到
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Users\myname\AppData\Local\Programs\Python\Python37\lib\threading.py", line 917, in _bootstrap_inner
self.run()
File "C:\Users\myname\AppData\Local\Programs\Python\Python37\lib\threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\myname\AppData\Roaming\Python\Python37\site-packages\keyboard\__init__.py", line 292, in listen
_os_keyboard.listen(self.direct_callback)
File "C:\Users\myname\AppData\Roaming\Python\Python37\site-packages\keyboard\_winkeyboard.py", line 560, in listen
prepare_intercept(callback)
File "C:\Users\myname\AppData\Roaming\Python\Python37\site-packages\keyboard\_winkeyboard.py", line 553, in prepare_intercept
keyboard_hook = SetWindowsHookEx(WH_KEYBOARD_LL, keyboard_callback, GetModuleHandleW(NULL), NULL)
ctypes.ArgumentError: argument 3: <class 'OverflowError'>: int too long to convert
(对 Python 来说很新,所以不确定上述任何一个是什么意思)
keyboard.is_pressed() 是我理想的解决方案,但我也对其他同样简单的解决方案完全开放。
解决方案
这是github上 python 3.7 的一个未解决问题。我刚刚使用 Python 3.6.4(anaconda 64 位)和键盘 0.13.2 测试了您链接中给出的代码,它按预期工作。Python 3.7 刚刚问世,所以肯定会有一些错误。
推荐阅读
- php - 从 Select 中获取 Text 值并将值放入标签中
- java - 如何根据嵌套对象属性对列表进行排序
- php - 是否可以在服务器上阻止导航器“编辑并重新发送”POST 请求?
- c++ - 函数模板不起作用,出现错误“没有合适的用户定义的转换”
- perl - 如何将 Perl 与 Whiptail 仪表一起使用?
- android - 无法在 Android Studio 下创建 64 位库的 APK
- c++ - 复制“观察者模式”上的构造函数
- javascript - Wrap div 依赖于它们的类,使用纯 JavaScript
- android - 使用 Handler PostDelayed 更改后 LiveData 未更新?
- node.js - openssh 使用加密生成的密钥对返回“错误的密钥类型”