📚博客主页:knighthood2001
✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下)
🎃知识星球:【认知up吧|成长|副业】介绍
❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️
🙏笔者水平有限,欢迎各位大佬指点,相互学习进步!
需求分析
当按下 Esc 键时退出,但如果只按下了 Ctrl+C 而没有按下 Esc 键,则不退出循环。
这个需求,使用场景还是很广泛的。
代码
import win32api
import win32con
import time
# 定义变量用于判断是否按下了 Ctrl+C 和 Esc 键
ctrl_c_pressed = False
esc_pressed = False
try:
print("按下 Ctrl+C 或 Esc 键来测试...")
while not esc_pressed:
# 获取键盘状态,检查 Ctrl+C 和 Esc 键是否被按下
if win32api.GetAsyncKeyState(ord('C')) and win32api.GetAsyncKeyState(win32con.VK_CONTROL):
ctrl_c_pressed = True
print("Ctrl+C 被按下")
# 检查 Esc 键是否被按下
if win32api.GetAsyncKeyState(win32con.VK_ESCAPE):
esc_pressed = True
print("Esc 键被按下,准备退出...")
time.sleep(0.1) # 在此处可以执行其他任务
except KeyboardInterrupt:
print("手动中断")
print("程序结束")
运行结果如下:
讲解
在循环中,首先检查是否按下了 Ctrl+C
键。win32api.GetAsyncKeyState(ord('C'))
和 win32api.GetAsyncKeyState(win32con.VK_CONTROL)
分别检查是否按下了 C 键和 Ctrl 键。如果同时按下了 C 和 Ctrl 键,则 ctrl_c_pressed
被设置为 True,并打印相应的消息。
同时,代码也检查是否同时按下了 Esc 键,如果是,则立即退出循环。
结语
大家可以换成其他键,这个功能使用还是很常见的。