📜  python 键盘按下 - Python (1)

📅  最后修改于: 2023-12-03 15:04:19.145000             🧑  作者: Mango

Python 键盘按下

在编写 Python 程序时,我们经常需要处理键盘输入。Python 提供了 input() 函数来获取从标准输入读取的用户输入。但是,在某些情况下,我们可能需要捕捉单个按键的按下事件,而不是一整行的输入。对于这种情况,Python 提供了不同的方式来获取键盘按下事件,例如使用第三方库或操作系统 API。

使用 pynput 库捕捉键盘按下事件

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 库捕捉键盘按下事件

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 API 捕捉键盘按下事件

在 Windows 操作系统上,可以使用 Windows API 来捕捉键盘按下事件。以下代码使用 win32apiwin32con 模块来捕捉按下 A 键的事件:

import win32api
import win32con

while True:
    if win32api.GetAsyncKeyState(ord('A')):
        print('A键被按下')

上述代码不断轮询 A 键是否被按下,如果检测到 A 键被按下,则打印消息。

总结

本文介绍了 Python 捕捉键盘按下事件的不同方法。pynputkeyboard 库是常用的跨平台键盘监听库,而 Windows API 提供了在 Windows 操作系统上捕捉键盘按下事件的方式。在实现键盘监听时,需要确保代码不被阻塞(如使用 pynputkeyboard 库的非阻塞模式),以便在收到按键事件时立即处理。