【问题标题】:Pyautogui if Image is Not on Screen如果图像不在屏幕上,则 Pyautogui
【发布时间】:2022-01-17 15:17:45
【问题描述】:

我正在尝试使用 Pyautogui 截取屏幕上未找到其他图像的屏幕截图。我检查了图像不存在,但我的代码没有执行。

谁能看出问题所在?

import pyautogui as py

if not py.locateOnScreen("sku2287.png", confidence=0.9, region=(245, 534, 123, 100)):
    py.screenshot('sku_absent.png', region=(45, 883, 423, 60))

【问题讨论】:

  • 也许先用print()看看你用locateOnScreen得到了什么

标签: python pyautogui


【解决方案1】:

使用while循环:

import pyautogui as py
img = py.locateOnScreen("sku2287.png", confidence=0.9, region=(245, 534, 123, 100))
while True:
    if img == None:
        py.screenshot('sku_absent.png', region=(45, 883, 423, 60))
        break

【讨论】:

  • 循环的意义何在?如果不是None,则循环将永远重复。但是如果是None,那么循环将永远不会重复; if 语句将只运行一次并中断循环。
  • 我认为如果图像不存在,他需要截屏,此代码检查图像是否不存在,如果存在则截屏并停止循环。
  • 我理解你的意图;循环的意义何在?它要么无限循环,要么根本不循环并在第一次迭代时退出; img 永远不会在循环中设置,这意味着循环是没有意义的。请解释为什么您认为这需要循环,以及您的代码如何成为解决方案,因为它对我来说根本没有意义。
  • @Random Davis 问题中给出的代码是有效的如果它在程序执行时没有出现在屏幕上 的动机循环是它会检查直到图像不可用如果它可用,它将停止程序。
  • 当您在循环开始之前只获得一次img 时,它会“检查直到图像不可用”是什么意思? if img == None 在循环开始时不会重新运行`py.locateOnScreen, so it's either going to be None` 或not Noneimg 一旦循环开始就永远不会改变。我在这里错过了什么吗?您的答案可能有误吗?对locateOnScreen 的调用是否应该在循环中而不是在它之前?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-03
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 2020-12-23
  • 2019-03-14
相关资源
最近更新 更多