首页 > 解决方案 > 如何在另一个窗口中随时通过按键跳出循环?

问题描述

嘿,我是一名初学者程序员,试图编写一些代码以每 4 秒按一次键盘上的字母“k”,同时还能够在不同的窗口中通过击键关闭程序。

我试过用这个,

import time
import pyautogui

def kicker():
    while True:
        time.sleep(4)
        pyautogui.press('k')

try:
    while True:
        kicker()
except KeyboardInterrupt:
    pass

但是我只能在我正在编码的窗口(jupyter notebook)打开时使用 KeyboardInterrupt,当我进入另一个窗口(jupyter 在后台仍然打开)时,我不能再中断循环。

我怎样才能做到这一点,以便我可以在不在 jupyter 笔记本窗口上时中断按键(不一定是 KeyboardInterrupt)上的循环?

标签: pythonmacros

解决方案


您可能想使用pyxhook来监听您机器上的所有击键。请注意,这与键盘记录器大致相同,并且可能涉及您机器上的管理员访问权限,因此可能需要考虑一些安全问题。

这是来自 repo 的示例脚本,展示了它打印事件,但感兴趣的行是第 15 行的函数:

def kbevent(event):
    global running

    if event.Ascii == <...Put ascii code for k here...>:
        running = False

推荐阅读