📅  最后修改于: 2023-12-03 15:04:19.145000             🧑  作者: Mango
在编写 Python 程序时,我们经常需要处理键盘输入。Python 提供了 input()
函数来获取从标准输入读取的用户输入。但是,在某些情况下,我们可能需要捕捉单个按键的按下事件,而不是一整行的输入。对于这种情况,Python 提供了不同的方式来获取键盘按下事件,例如使用第三方库或操作系统 API。
pynput
是一个 Python 库,它提供了跨平台的输入设备监控功能,包括键盘和鼠标。使用 pip 安装 pynput
库:
pip install pynput
以下代码展示了如何使用 pynput
库来捕捉键盘按下事件:
from pynput import keyboard
def on_press(key):
try:
print('按键{0}被按下'.format(key.char))
except AttributeError:
print('特殊按键{0}被按下'.format(key))
def on_release(key):
print('按键{0}被释放'.format(key))
# 创建键盘监控器
with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
上述代码创建一个键盘监听器,并在按下和释放键时触发 on_press()
和 on_release()
回调函数。on_press()
函数打印按下的按键,包括特殊键,如 Shift 和 Ctrl。on_release()
函数打印被释放的按键。
keyboard
是另一个 Python 库,可以用来捕捉键盘按下事件。使用 pip 安装 keyboard
库:
pip install keyboard
以下代码展示了如何使用 keyboard
库来捕捉键盘按下事件:
import keyboard
def on_press(event):
print('按键{0}被按下'.format(event.name))
keyboard.on_press(on_press)
# 阻塞程序,直到按下 Ctrl+C 结束程序
keyboard.wait('ctrl+c')
上述代码创建一个键盘监听器,当键盘按键被按下时触发 on_press()
回调函数。on_press()
函数打印按下的按键的名称。
在 Windows 操作系统上,可以使用 Windows API 来捕捉键盘按下事件。以下代码使用 win32api
和 win32con
模块来捕捉按下 A 键的事件:
import win32api
import win32con
while True:
if win32api.GetAsyncKeyState(ord('A')):
print('A键被按下')
上述代码不断轮询 A 键是否被按下,如果检测到 A 键被按下,则打印消息。
本文介绍了 Python 捕捉键盘按下事件的不同方法。pynput
和 keyboard
库是常用的跨平台键盘监听库,而 Windows API 提供了在 Windows 操作系统上捕捉键盘按下事件的方式。在实现键盘监听时,需要确保代码不被阻塞(如使用 pynput
和 keyboard
库的非阻塞模式),以便在收到按键事件时立即处理。