如何在 macOS 上使用 PyAutoGUI 库中的 locateOnScreen 函数?

How to utilize the locateOnScreen function from the PyAutoGUI library on macOS?

提问人:leo adigwe 提问时间:10/21/2023 最后编辑:Display Nameleo adigwe 更新时间:11/12/2023 访问量:58

问:

我尝试执行以下脚本:

import pyautogui
res = pyautogui.locateOnScreen('edit')
print(res)

但是,我遇到了以下错误消息:

回溯(最近一次调用最后一次): 文件“/Users/adigweleo/gui2.py”,第 2 行,在 res = pyautogui.locateOnScreen('编辑') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 文件“/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/pyautogui/init.py”,第 172 行,包装器 返回 wrappedFunction(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 文件“/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/pyautogui/init.py”,第 210 行,位于 locateOnScreen 中 返回 pyscreeze.locateOnScreen(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 文件“/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/pyscreeze/init.py”,第 375 行,位于 locateOnScreen 中 screenshotIm = 截图( ^^^^^^^^^^^ 文件“/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/pyscreeze/init.py”,第 527 行,screenshot_osx 如果元组(PIL__version_) < (6, 2, 1): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError:“str”和“int”的实例之间不支持“<”

我将所需的屏幕图像作为编辑存储在目录中。在此之后,我创建并激活了一个新的虚拟环境。随后,我同时使用了 和 来安装 Pillow、pyautogui 和 pyscreeze。遗憾的是,尽管做出了这些努力,但问题仍然存在,如上面显示的错误消息所示。Users/adigweleopippip3

python macos 动画 python-imaging-library pyautogui

评论

0赞 Connor Club 10/21/2023
看起来 Pillow 已过时,您确定 pip 正在下载正确的版本?
0赞 leo adigwe 10/21/2023
我有 10.1.0 枕头版本

答:

0赞 Connor Club 10/21/2023 #1

我已经在pyscreeze库中进行了一些查看,并得出结论,该版本是错误的。
如果你在 github 上查看,你可以看到
错误的行。
除了,如果你看一下你自己的回溯,那行说的是。这会导致 TypeError,字符串也是如此。
事实证明,github 上的拉取请求 99 已经到位并修复了它。
更新 pyscreeze 应该可以解决问题。
if PILLOW_VERSION < (6, 2, 1):if tuple(PIL__version_) < (6, 2, 1): PIL__version__

评论

0赞 leo adigwe 10/21/2023
我用这个命令'pip3 install --upgrade pyscreeze'更新了pyscreeze,但我仍然有同样的错误。我目前使用 pyscreeze 版本 0.1.29
0赞 Connor Club 10/22/2023
著名的。尝试卸载 pyscreeze,然后从 git 存储库安装(搜索如何使用 pip 从 git 存储库安装)
0赞 leo adigwe 10/22/2023
我使用此命令克隆 pyscreeze repo 'git clone github.com/asweigart/pyscreeze.git' ,但错误仍然存在
0赞 Connor Club 10/22/2023
您是否还使用命令安装了下载的存储库,或者您只运行了 git clone?
0赞 leo adigwe 10/24/2023
我刚刚运行了 git clone
0赞 Al Sweigart 11/12/2023 #2

有一些混淆:该函数不执行 OCR 或识别文本,因此您不想将字符串传递给它。相反,您希望向它传递一个图像文件名的字符串,它会在屏幕上定位图像。这张图片应该来自你对要点击的内容的截图,并且必须是像素完美的匹配。locateOnScreen()'edit'