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

单击像素后,如何中断循环并重新获取屏幕截图?

如何解决单击像素后,如何中断循环并重新获取屏幕截图?

我正在尝试单击某个特定颜色的像素,当它出现在定义的屏幕截图中时,然后重新获取屏幕快照并扫描更多特定颜色的像素,并在找到一个像素后单击一个,依此类推。我认为我的代码正在截屏,然后扫描像素的颜色,一旦找到颜色就单击它,但它没有重新截取屏幕截图,而是继续扫描该屏幕快照以查找具有匹配颜色的更多像素然后点击它们。如何找到找到并单击的像素,然后中断for循环扫描像素,然后重新开始抓屏过程?我的代码在下面,谢谢!

from pyautogui import *
import pyautogui
import time
import keyboard
import random
import win32api,win32con

time.sleep(2)

def click(x,y):
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0)

#Color of enemy: (254,118,136)

while keyboard.is_pressed('q') == False:

    range1 = 250
    range2 = 258
    range3 = 114
    range4 = 125
    range5 = 122
    range6 = 148
    
    pic = pyautogui.screenshot()
    width,height = pic.size
    pic = pyautogui.screenshot(region=(((0.5*width)-100),(0.5*height-100),200,200))
    width,height = pic.size
    
    for x in range(0,width,1):
        for y in range(0,height,1):

            r,g,b = pic.getpixel((x,y))

            if (((r in range(range1,range2))and(g in range(range3,range4)))):
                #and(b in range(range5,range6)))):
                moveto(x+width,y+height)
                click(x+width,y+height)
                time.sleep(0.1)
                break

解决方法

不是一个完整的答案,但您的问题是中断只是退出y的第一个循环,而不是退出x的一个循环。一种解决方法是为循环创建一个函数并退出该函数

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