如何用msvcrt实现带5秒超时的Python按键输入检测
Windows 11 + Python 3.11 实现5秒按键检测逻辑
直接用msvcrt.kbhit()和msvcrt.getch()结合time模块就能实现需求,核心思路是定时检测按键状态+超时判断,以下是可直接运行的代码:
import msvcrt import time # 模拟事件触发后的等待阶段 print("事件已触发,等待按键输入(5秒超时)...") start_time = time.time() has_key = False while True: # 检测是否有按键按下 if msvcrt.kbhit(): # 获取按键内容 key_byte = msvcrt.getch() # 处理方向键、功能键这类特殊按键(会返回两个字节的键码) if key_byte in (b'\x00', b'\xe0'): key_byte = msvcrt.getch() # 转成字符串打印,处理无法解码的特殊字符 print(f"按下的按键: {key_byte.decode('utf-8', errors='replace')}") has_key = True break # 判断是否超过5秒超时时间 if time.time() - start_time >= 5: print("No key pressed") break # 短暂休眠减少CPU占用 time.sleep(0.01)
代码说明
msvcrt.kbhit():实时检测是否有按键输入,有则返回True,无则返回Falsemsvcrt.getch():获取按下的按键字节,特殊按键(如方向键、F键)会先返回b'\x00'或b'\xe0',需要再调用一次getch()获取实际键码time.time():记录事件触发的起始时间,通过计算时间差判断是否超时time.sleep(0.01):避免循环持续占用CPU,每次循环休眠10毫秒
内容的提问来源于stack exchange,提问作者grace.cutler
相关产品推荐
相关产品推荐

