python - 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
if
此外,在 Python 中,和while
语句中不需要括号。所以你可以if (end != None):
改为if end != None: