如何在按下特定键时使while True循环中断?[Python]

1 投票
2 回答
639 浏览
提问于 2025-04-16 03:25

我的脚本是一个无限循环,从按下F4键开始,但我想让它在按下F2键时停止,我该怎么做呢?

我正在尝试这个方法(使用pyhook),但是没有成功……

def onKeyboardEvent(event):
    if event.KeyID == 115:      #F4
        while True:
            selectAndCopy(468,722)
            getClipboard()
            time.sleep(2)
            if event.KeyID == 113:
                break
    return True

2 个回答

0

创建一个键盘事件,具体要求如下:

  1. 按下F4键时,将一个变量的值改为True,如果这个变量仍然是True,就启动一个新的定时器事件。例如,在Tkinter中可以这样做:

    mylabel.after(2000, process) # 这里的process是你想要执行的函数

  2. 按下F2键时,将这个变量的值改为False,并且取消定时器(使用after_cancel)。

1

在你的循环中,你并没有改变 event 的值,所以你不会指望 event.KeyID 会突然从115变成113。

你可以做的是,当按下F4键时,启动一个计时器,每两秒执行一次selectAndCopy操作。当你收到另一个F2键的事件时,就停止这个计时器。

这可能看起来像这样:

def onKeyboardEvent(event):
    if event.KeyID == 115:      #F4
        startTimer(doTimer, 2)
    if event.KeyID == 113:
        stopTimer()

def doTimer():
    selectAndCopy(468,722)
    getClipboard()

你需要提供或者找到 startTimer()stopTimer() 的实现。

撰写回答