我正在尝试完成一个简单的GUI自动化程序,该程序仅打开一个网页,然后每0.2秒单击该页面上的特定位置,直到我告诉它停止为止。我希望我的代码能够运行并无限循环运行,直到我指定的按键绑定打破了循环(或整个程序)。我从经典的KeyboardInterrupt入手,据说可以使CTRL + C退出程序。这是我的代码:
import webbrowser, pyautogui, time
webbrowser.open('https://example.com/')
print('Press Ctrl-C to quit.')
time.sleep(5)
#pyautogui.moveTo(1061, 881)
try:
while True:
time.sleep(0.2)
pyautogui.click(1061,881)
except KeyboardInterrupt:
print('\nDone.')
不幸的是,KeyboardInterrupt并使用CTRL-C退出似乎不适用于此脚本(可能是由于while循环?)。这将导致循环继续无限运行,而无法停止。所以我的问题是:为什么键盘中断不起作用?我在其他脚本中也看到过类似的示例。另外,如果KeyboardInterrupt无法正常工作,有没有办法我可以编写一个简单的键盘绑定来退出程序/循环?
答案 0 :(得分:1)
我怀疑这可能与您有一个不同于脚本的活动窗口有关;当您使用webbrowser
时,打开一个网页,然后单击它,它将活动窗口移至该网页而不是Python控制台。因此,只有在控制台是活动窗口时,ctrl+c
才会产生KeyboardInterrupt
。您的脚本实际上可能是正确的;但是您的活动窗口不在Python上,因此您必须在程序运行时通过单击Python控制台来对其进行测试。
要回答您的评论:不,我不知道有任何其他“快速”方式来做这种事情。
答案 1 :(得分:1)
使用以下代码
pyautogui.FAILSAFE = True
然后停止,将鼠标移动到屏幕的左上角