以下のスクリプトに示すように、 pyautoguiを使用して、GUI に定期的にポップアップするボタンをクリックしています。ただし、ボタンが画面に表示されていない場合、スクリプトはループを実行中に 2 つの迷惑なビープ音を鳴らします。
画像が画面上に見つからない場合の戻り値と思われるに置き換える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
3つの画像に遭遇しました。これにより、予想通り3つのビープ音が発生しました...したがって、それは間違いなくpyautoguiの問題/「機能」のようです...
編集 2
pyautogui.locateOnScreen
はhereからインポートされます。238行目を参照してください。実際には例外が発生するようです:
except ImageNotFoundException:
if time.time() - start > minSearchTime:
raise