pyautogui.locateOnScreen 在 Linux 上的工作方式不同

问题描述 投票:0回答:1

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

def __clicks_print(area, *print_names, clicks=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)

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

raise ImageNotFoundException  # Raise PyAutoGUI's ImageNotFoundException.

奇怪的是,我在 Windows 中使用了这种确切类型的循环,并且它正常工作,程序不断寻找 loc,直到找到一个。

我尝试复制与 Windows 计算机上完全相同的功能,但它不起作用,程序在无法找到像素时不断停止。 我希望程序继续查找,直到找到屏幕上的像素。这样我就可以给函数多次打印来定位。

python linux pyautogui
1个回答
0
投票

我设法通过使用 try except 让它工作,所以我可以忽略异常。我仍然不明白为什么它可以在没有它的情况下在 Windows 上运行。 代码:

def __clicks_print(area, *print_names, clicks=1):
loc = None
while not loc:
    for print_name in print_names:
        try:    
            loc = pyautogui.locateOnScreen(print_name, region=area)
            print(loc)
            if loc:
                break
        except:
            pass
pyautogui.moveTo(loc)
pyautogui.click(clicks)
© www.soinside.com 2019 - 2024. All rights reserved.