首页 > 解决方案 > 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 

标签: pythonbotspyautogui

解决方案


问题是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 

if此外,在 Python 中,和while语句中不需要括号。所以你可以if (end != None):改为if end != None:


推荐阅读