python - 如何通过按键随时跳出循环
问题描述
我在 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)
这是我在这里的第一个问题,所以如果我的格式错误,请告诉我。此外,如果有人建议让我的代码更漂亮,我会很乐意接受。
解决方案
正如评论中提到的,线程是一个很好的方法:
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
推荐阅读
- spring - Spring Boot 中禁止 OPTIONS 请求
- asp.net-mvc - MVC 中的按钮提交未按预期工作
- python - 如何修复 ValueError:期望属性名称:第 4 行第 1 列(字符 43)
- javascript - vue-good-table 行上是否有右键单击事件来显示上下文菜单?
- go - 将返回的错误分配给下划线
- asp.net-core - .NET core 中区域的使用
- c - 为什么我的代码块在 main() 中起作用,但在它自己的函数中不起作用?
- laravel - 我正在使用 laravel 5.6 日志,我正在尝试存储用户登录数据
- ios - 如何在这个项目中实现新的 .mlmodel
- angular - 如何在按钮单击时在父 div 中附加和删除子 div?