如何解决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 中,您不需要在 if
和 while
语句中使用括号。因此您可以将 if (end != None):
更改为 if end != None:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。