微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PyAutogui:当图像出现时如何停止循环?

如何解决PyAutogui:当图像出现时如何停止循环?

在我的 while 循环中,我想在检测到图像后立即停止但它不起作用(我使用 pyautogui),请对代码提出意见:

# Combat
nike = None
tour = "tour.png"
win = "win.png"
sort = "sort.png"
end = pyautogui.locateOnScreen(win)

while (nike == None):
    try:
     nike = pyautogui.locateOnScreen(tour)
     pyautogui.press("b")
     attack = pyautogui.locateOnScreen("attack.png",confidence=0.7)
     pyautogui.moveto(attack)
     pyautogui.click()
     pyautogui.press("b")
     attack = pyautogui.locateOnScreen("attack.png",confidence=0.7)
     pyautogui.moveto(attack)
     pyautogui.click()
     pyautogui.press("f1")
     end = pyautogui.locateOnScreen(win)
     if (end == True):
      pyautogui.press("enter")
     break 

解决方法

问题在于 pyautogui.locateOnScreen() 不返回 True/False

pyautogui.locateOnScreen() 返回该图像的坐标,如果未找到该图像,则返回 None

因此,您必须将 if (end == True): 更改为 if (end != None):

将您的最终代码保留如下:

# Combat
nike = None
tour = "tour.png"
win = "win.png"
sort = "sort.png"
end = pyautogui.locateOnScreen(win)

while (nike == None):
    try:
     nike = pyautogui.locateOnScreen(tour)
     pyautogui.press("b")
     attack = pyautogui.locateOnScreen("attack.png",confidence=0.7)
     pyautogui.moveTo(attack)
     pyautogui.click()
     pyautogui.press("b")
     attack = pyautogui.locateOnScreen("attack.png",confidence=0.7)
     pyautogui.moveTo(attack)
     pyautogui.click()
     pyautogui.press("f1")
     end = pyautogui.locateOnScreen(win)
     if (end != None):
      pyautogui.press("enter")
     break 

此外,在 Python 中,您不需要在 ifwhile 语句中使用括号。因此您可以将 if (end != None): 更改为 if end != None:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。