首页 > 解决方案 > 如何通过按键随时跳出循环

问题描述

我在 Windows 10、VSCode、Python 3.9 上

我的程序是一个无限循环,可以在屏幕上移动鼠标。目前,我的代码允许我在鼠标移动之间退出程序,但不能在鼠标移动中间退出。我希望能够通过按键随时休息。

import time
import pyautogui
import keyboard
pyautogui.FAILSAFE = False
pyautogui.PAUSE = 0
var = 1

while var == 1:

if keyboard. is_pressed('b'):
    break
else:
    pyautogui.moveTo(384, 216, 0.5)

if keyboard. is_pressed('b'):
    break
else:
    pyautogui.moveTo(1536, 216, 0.5)

if keyboard. is_pressed('b'):
    break
else:
    pyautogui.moveTo(1536, 864, 0.5)

if keyboard. is_pressed('b'):
    break
else:
    pyautogui.moveTo(384, 864, 0.5)

这是我在这里的第一个问题,所以如果我的格式错误,请告诉我。此外,如果有人建议让我的代码更漂亮,我会很乐意接受。

标签: pythonpython-3.xloopsbreakpyautogui

解决方案


正如评论中提到的,线程是一个很好的方法:

import threading
import time
import keyboard

def move_mouse(arg):    # simulate a blocking function call, like pyautogui.moveTo()
    print("moving {}".format(arg))
    time.sleep(arg)

def loop_through_moves():
    while True:
        move_mouse(1)
        move_mouse(2)
        move_mouse(3)

t = threading.Thread(target=loop_through_moves)
t.daemon = True
t.start()

while True:
    if keyboard. is_pressed('b'):
        break

推荐阅读