如何在按下特定键时使while True循环中断?[Python]
我的脚本是一个无限循环,从按下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
创建一个键盘事件,具体要求如下:
按下F4键时,将一个变量的值改为True,如果这个变量仍然是True,就启动一个新的定时器事件。例如,在Tkinter中可以这样做:
mylabel.after(2000, process) # 这里的process是你想要执行的函数
按下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()
的实现。