我正在尝试在执行过程中停止while循环,如果我在执行过程中反转“runWhile”的值,它只会等待它结束
问题:每当我按键盘上的f10键时,我需要它立即停止
from pynput import keyboard
import threading
import datetime, time
def exec():
while runWhile:
print("There I go")
time.sleep(3)
print("I overtaken")
time.sleep(3)
print("You cant stop me until I finish")
def on_press(key):
global runWhile # inform function to assign (`=`) to external/global `running` instead of creating local `running`
if key == keyboard.Key.f5:
runWhile = True
t = threading.Thread(target=exec)
t.start()
if key == keyboard.Key.f10:
# to stop loop in thread
print("loading STOPPED", datetime.datetime.now()) #, end='\r')
runWhile = False
if key == keyboard.Key.f11:
# stop listener
print("listener TERMINATED", datetime.datetime.now()) #, end='\r')
return False
#--- main ---
with keyboard.Listener(on_press=on_press) as listener:
listener.join()
这是我提出的一个解决方案。我创建了自己的延迟函数,如下所示:
您将用以下内容替换您的延迟(3)
这将等待3秒钟,但是如果在此期间runWhile为false,它将中断循环。您的代码如下所示:
相关问题 更多 >
编程相关推荐