pyautogui.click 挂起/停止程序

问题描述 投票:0回答:2

当我调用 pyautogui.click 函数时,单击会被执行,但随后程序会停止。当我按 ctrl+c 时,程序再次运行。

我简化了我的问题

import pyautogui
pyautogui.click(956, 222)
print("Hello")

您可能期望它会单击并打印,但它会单击,等到我按 ctrl+c 然后再打印。

它曾经有效。

我已经尝试过其他版本的 pyautogui,每次都一样。 我现在也用 win32api 尝试过,在遇到与 pyautogui 相同的问题后,它可以工作一次。

顺便说一句,我的第一篇文章,抱歉,如果语法突出显示错误

pyautogui
2个回答
0
投票

我不确定其原因的详细信息,但它是由于 print 语句而发生的。我知道如何解决这个问题的两种方法:

  1. 删除打印语句
  2. 或者当程序启动时将鼠标放在终端之外

0
投票

我在

pyautogui
pynput
都面临同样的问题。 我通过将
pyautogui.click
放入单独的进程中,为您的案例找到了一个技巧:

import multiprocessing
import time
import pyautogui


def click_process(x, y):
    pyautogui.click(x, y)


def click(x, y):
    clicking = multiprocessing.Process(target=click_process, args=(x, y))
    clicking.start()
    time.sleep(1)
    clicking.terminate()


if __name__ == '__main__':
    click(956, 222)
    print('Hello')

不幸的是,现在我面临另一个问题 - 该过程没有终止。程序按一下并按预期打印

Hello
,但它不会退出。此外,如果您在尝试终止后使用
multiprocessing.active_children()
打印活动子进程,您仍然会看到挂起的子进程。我尝试使用kill()而不是terminate(),并尝试使用os和psutil通过pid杀死它 - 仍然挂起。

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