pyautogui GIMP自动化问题

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

我正在用GIMP做一些自动化作为我的测试用例。我需要启动程序并向其发送鼠标/键盘操作。我正在使用subprocess.call()启动程序和pyautogui发送鼠标/键盘动作。

import pyautogui
import subprocess

subprocess.call('gimp', shell=True)    
gimp_file = pyautogui.locateOnScreen('imgs/gimp_file.png', grayscale=True,region=(5, 28, 29, 19))

file_button_x, file_button_y = pyautogui.center(gimp_file)  
pyautogui.click(file_button_x, file_button_y, duration=0.75)

我遇到的问题是pyautogui部分代码从未被命中,程序似乎只是挂起。我在PyCharm中运行调试器并且没有返回任何变量。如果我在python控制台中运行subprocess.call('gimp'),而在其他控制台的代码中运行其余部分,它会做它应该做的事情。我认为可以是由程序启动或窗口焦点引起的时间延迟;我添加time.sleep(5)来解决前一个原因,但没有影响。我怎么解决这个问题?

python pycharm pyautogui
1个回答
1
投票

subprocess.call()将等待进程退出 - 这不会发生(除非你退出GIMP),你也不想等待。你应该使用subprocess.Popen()stdin设置为subprocess.DEVNULLstdout/stderr要么单独留下,要么也重定向到DEVNULL。这将允许您的程序进入pyautogui线,而GIMP正在运行。

请注意,gimp会显示启动画面,因此在尝试查找其窗口并“单击”其中之前,您可能需要等待一段时间。

© www.soinside.com 2019 - 2024. All rights reserved.