如何编写Python代码检测左键按下及0.5秒内双击Alt键?
实现左键按下时检测0.5秒内Alt键连续双击的Python方案
需求:检测左键是否被按下,同时检测在约0.5秒的时间范围内Alt键是否被连续按下两次。
原代码存在的问题
while True的else分支永远不会执行,状态重置逻辑完全失效- 第三次
elif仅判断时间范围,未检测Alt键是否被再次按下,会导致时间窗口内持续触发提示 - 缺少按键松开后的状态重置逻辑,比如左键松开后未重置Alt相关标记
修正后的代码
import keyboard import time def main(): left_pressed = False first_alt_time = 0 alt_double_clicked = False double_click_window = 0.5 # 0.5秒的检测窗口 while True: # 检测左键按下/松开状态 if keyboard.is_pressed('left'): if not left_pressed: print('左键已按下') left_pressed = True # 按下左键时重置Alt相关状态 first_alt_time = 0 alt_double_clicked = False else: if left_pressed: left_pressed = False print('左键已松开') # 左键按下状态下检测Alt键 if left_pressed: if keyboard.is_pressed('alt'): if not first_alt_time: # 第一次按下Alt,记录时间 print('第一次按下Alt') first_alt_time = time.time() alt_double_clicked = False else: # 已记录过第一次Alt的时间,检查是否在窗口内再次按下 current_time = time.time() if current_time - first_alt_time <= double_click_window and not alt_double_clicked: print('0.5秒内连续按下两次Alt') alt_double_clicked = True else: # 松开Alt时,若超过窗口时间则重置第一次Alt的记录 if first_alt_time and time.time() - first_alt_time > double_click_window: first_alt_time = 0 time.sleep(0.01) # 降低CPU占用 if __name__ == "__main__": main()
代码说明
- 用
left_pressed跟踪左键的按下状态,松开时自动重置Alt相关标记 first_alt_time记录第一次按下Alt的时间,alt_double_clicked标记是否已触发过双击提示- 左键按下状态下,第一次按Alt记录时间;0.5秒内再次按Alt则触发双击提示
- 松开Alt且超过检测窗口后,重置第一次Alt的记录,允许重新触发双击检测
- 添加
time.sleep(0.01)减少循环对CPU的占用
内容的提问来源于stack exchange,提问作者White
相关产品推荐
相关产品推荐

