我正在使用pyautogui单击一个按钮,该按钮会定期在我的 GUI 上弹出,如下面的脚本所示。但是,当按钮不在屏幕上时,脚本会在循环时发出两声烦人的哔声。
如果我替换pyautogui.locateOnScreen(...)
为None
,如果图像无法在屏幕上定位,这似乎是返回值,声音似乎消失了。
该脚本使用 python 2.7 在 Jupyter Notebook (v4) 中运行,我使用的是带有 Gnome 的 Debian 8.1。
import pyautogui
import time
starttime = time.time()
while time.time()-starttime<10:
img_path_inactive = "/home/user/folder/inactive_target.png"
img_path_active = "/home/user/folder/active_target.png"
img_list = [img_path_inactive, img_path_active]
get_target = map(pyautogui.locateOnScreen, img_list) # <--- This line beeps! See edit 2
if any(get_target):
pyautogui.click(filter(None, get_target)[0][0], filter(None, get_target)[0][1])
# The if check above was previously (hence the title):
# if pyautogui.locateOnScreen(img_path_active) or pyautogui.locateOnScreen(img_path_inactive):
# click_target = pyautogui.locateOnScreen(img_path_active) or pyautogui.locateOnScreen(img_path_inactive)
# pyautogui.click(click_target[0], click_target[1])
time.sleep(2)
print("Finished loop.")
编辑
我将脚本放在一个 .py 文件中,然后从命令行运行它以检查它是否是 jupyter 的东西。虽然它仍然发出哔哔声。
之后我跑pyautogui.locateOnScreen
了三张图片,这导致了可以预见的三声哔哔声……所以这肯定是一个 pyautogui 问题/“功能”……
编辑 2
pyautogui.locateOnScreen
从这里导入,见第 238 行。它实际上似乎引发了一个异常:
except ImageNotFoundException:
if time.time() - start > minSearchTime:
raise