You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中keyboard模块移除后,内置替代按键检测模块咨询

仅用Python内置库实现特定按键触发事件的方案

因为不能使用第三方keyboard库,可根据操作系统选择对应的内置库实现:

Windows 平台

使用内置的msvcrt库,它提供了与控制台交互的函数:

import msvcrt

def wait_for_key(target_key):
    while True:
        # 获取按下的按键(阻塞式)
        pressed_key = msvcrt.getch().decode('utf-8')
        if pressed_key == target_key:
            print("触发事件:目标按键已按下")
            # 在这里添加你要执行的事件逻辑
            break

# 示例:等待按下字母'a'时触发事件
wait_for_key('a')
  • 说明:msvcrt.getch()会阻塞程序直到有按键按下,返回的字节需解码为字符串后判断;如果要监听特殊按键(如方向键),需要处理多字节输入,可结合msvcrt.kbhit()做非阻塞检测。

Unix/Linux/macOS 平台

使用sys、termios和tty这几个内置库修改终端输入模式,实现按键监听:

import sys
import termios
import tty

def get_key():
    # 保存终端原有设置
    old_settings = termios.tcgetattr(sys.stdin)
    try:
        # 设置终端为原始模式,直接读取按键
        tty.setraw(sys.stdin.fileno())
        key = sys.stdin.read(1)
    finally:
        # 恢复终端原有设置
        termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)
    return key

def wait_for_key(target_key):
    while True:
        pressed_key = get_key()
        if pressed_key == target_key:
            print("触发事件:目标按键已按下")
            # 在这里添加你要执行的事件逻辑
            break

# 示例:等待按下字母'b'时触发事件
wait_for_key('b')
  • 说明:tty.setraw()让终端不再等待回车键,直接返回按键;特殊按键(如Ctrl+C)会被捕获,若需要保留系统默认行为,需额外处理信号;同样,方向键等特殊键会返回多字节序列,需额外判断。

内容的提问来源于stack exchange,提问作者James Logie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 04:25:56