【问题标题】:How do I break out of the loop at anytime with a keypress while in another window?如何在另一个窗口中随时通过按键跳出循环?
【发布时间】:2021-10-17 22:46:23
【问题描述】:

嘿,我是一名初级程序员,尝试编写一些代码以每 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 在后台仍然打开)时,我不能再中断循环。

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

【问题讨论】:

    标签: python macros


    【解决方案1】:

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

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

    def kbevent(event):
        global running
    
        if event.Ascii == <...Put ascii code for k here...>:
            running = False
    

    【讨论】:

      猜你喜欢
      • 2021-03-31
      • 2013-04-29
      • 2020-09-21
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 2020-02-20
      • 2010-09-27
      • 1970-01-01
      相关资源
      最近更新 更多