如何用同一热键(F1)在Python中切换启停时间追踪?
用单个热键循环触发启动/停止时间追踪(Python keyboard库)
你可以通过状态标记变量结合热键回调函数的方式实现,完全不需要while循环,依托keyboard库的事件驱动机制就能完成循环触发逻辑:
import keyboard # 你的原有函数 def start_tracking(): # 这里写启动时间追踪的代码 print("开始追踪时间") def end_tracking(): # 这里写停止时间追踪的代码 print("停止追踪时间") # 状态标记:记录当前是否正在追踪 is_tracking = False def toggle_tracking(): global is_tracking if not is_tracking: start_tracking() is_tracking = True else: end_tracking() is_tracking = False # 绑定F1热键到切换函数 keyboard.add_hotkey("F1", toggle_tracking) # 保持程序运行(keyboard库需要主进程存活才能监听热键) keyboard.wait()
逻辑说明
is_tracking作为全局状态变量,标记当前追踪状态(False未启动,True正在追踪)toggle_tracking是热键的回调函数,每次按下F1时执行:- 如果未启动追踪,调用
start_tracking并切换状态为已启动 - 如果正在追踪,调用
end_tracking并切换状态为未启动
- 如果未启动追踪,调用
keyboard.wait()用于保持主进程运行,否则程序会直接退出,无法监听热键
这种方式完全基于keyboard库的事件回调,没有轮询式的while循环,不会造成不必要的性能损耗。
内容的提问来源于stack exchange,提问作者tschilpi
相关产品推荐
相关产品推荐

