我正在运行Linux(Pop OS 22.04),并try 使用pyautgui.locateOnScreen方法进行循环,代码如下:

def __clicks_print(area, *print_names, nclicks=1):
    loc = None
    while not loc:
        for print_name in print_names:
            loc = pyautogui.locateOnScreen(print_name, region=area)
            print(loc)
            if loc:
                break
    pyautogui.moveTo(loc)
    pyautogui.click(clicks=nclicks)

当我try 运行该函数时,程序最终停止并出现以下错误:

raise ImageNotFoundException  # Raise PyAutoGUI's ImageNotFoundException.

奇怪的是,我在Windows中使用了这种完全相同的循环类型,而且它确实有效,程序会不断寻找loco,直到找到一个.

我试图复制与Windows机器上的完全相同的功能,但它不起作用,当程序无法定位像素时,它就会不断停止. 我希望程序继续查找,直到找到屏幕上的像素.这样,我就可以为该函数赋予多个打印来定位.

推荐答案

我通过使用try except设法使其工作,这样我就可以忽略异常.在旧的pyautogui版本中,当找不到图像时,它似乎会返回"无",而现在,在更新的版本中,它会抛出一个重复. 代码:

def __clicks_print(area, *print_names, nclicks=1):
    loc = None
    while not loc:
        for print_name in print_names:
            try:    
                loc = pyautogui.locateOnScreen(print_name, region=area)
                if loc:
                    break
            except:
                pass
    pyautogui.moveTo(loc)
    pyautogui.click(clicks=nclicks)

Python相关问答推荐

在for循环中保存和删除收件箱

使用regex分析具有特定字符的字符串(如果它们存在)

更改Seaborn条形图中的x轴日期时间限制

Python -Polars库中的滚动索引?

Python plt.text中重叠,包adjust_text不起作用,如何修复?

Pandas :多索引组

如何根据条件在多指标框架上进行groupby

如何通过多2多字段过滤查询集

如何使用Google Gemini API为单个提示生成多个响应?

具有多个选项的计数_匹配

我在使用fill_between()将最大和最小带应用到我的图表中时遇到问题

在Google Colab中设置Llama-2出现问题-加载判断点碎片时Cell-run失败

修复mypy错误-赋值中的类型不兼容(表达式具有类型xxx,变量具有类型yyy)

部分视图的DataFrame

递归访问嵌套字典中的元素值

计算分布的标准差

如何保持服务器发送的事件连接活动?

为什么Django管理页面和我的页面的其他CSS文件和图片都找不到?'

如何禁用FastAPI应用程序的Swagger UI autodoc中的application/json?

Python—转换日期:价目表到新行