我在无限while循环中使用pyautogui
,每10秒在屏幕上迭代移动鼠标。pyautogui
实现了一个故障保护机制,如果鼠标位于屏幕左上角(0,0)坐标,则抛出pyautogui.FailSafeException
。
我使用time.sleep()
和以下代码实现了这个简单的逻辑:
import time
try:
while True:
for coords in [(100, 100), (1000, 100), (1000, 1000), (100, 1000)]:
pyautogui.moveTo(coords)
time.sleep(10) # <- I want to be catching exceptions during this time period as well as when the code is actively running
except pyautogui.FailSafeException:
# DO SOMETHING
但是,如果我在10秒睡眠期间将鼠标移动到左上角,则直到10秒睡眠结束时才会捕获异常(很明显!)。我的目标是立即捕获此异常,而不是等到这10秒结束。
所以我的问题是--有没有一个函数可以让我在代码“什么都不做”的10秒内捕捉异常?
1条答案
按热度按时间c9qzyr3d1#
你可以轮询来检查时间是否已经到期,而不是使用阻塞睡眠命令。轮询时,你可以检查鼠标的位置。如果鼠标的位置是
(0,0)
,你就可以立即爆发。下面是代码:
代码:
sleep_for()
函数用于在等待10秒时监视鼠标位置。如果鼠标移动到(0,0)
位置,则它将立即跳出while循环。