You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含if/elif的pyautogui点击代码嵌入while循环实现指定条件停止

解决方案

你可以通过break关键字+超时防死锁的逻辑实现需求,修改后的完整代码如下:

import pyautogui
import time

# 配置参数,可按需修改
MAX_RUN_SECONDS = 300  # 最长运行时间(秒),到点自动终止防止无限循环
LOOP_INTERVAL = 0.2  # 每轮循环间隔时间,避免占用过高CPU

start_time = time.time()
while True:
    # 超时判断,防止无限循环
    if time.time() - start_time > MAX_RUN_SECONDS:
        print("已达到最大运行时间,自动终止程序")
        break
    
    # 原有判断逻辑
    if ((pyautogui.pixel(362,349)[0] == 76)  and (pyautogui.pixel(362,349)[1] == 145) and (pyautogui.pixel(362,349)[2] == 186) ):
        pyautogui.click(362,349)
        time.sleep(0.1) 
        pyautogui.click(867,647)
        break  # 完成目标点击后直接终止循环
    elif ((pyautogui.pixel(1025,342)[0] == 17)  and (pyautogui.pixel(1025,342)[1] == 129) and (pyautogui.pixel(1025,342)[2] == 181) ):
        pyautogui.click(1025,342)
        time.sleep(0.1) 
        pyautogui.click(867,647)
        break  # 完成目标点击后直接终止循环
    elif ((pyautogui.pixel(682,347)[0] == 15)  and (pyautogui.pixel(682,347)[1] == 117) and (pyautogui.pixel(682,347)[2] == 169) ):
        pyautogui.click(682,347)
        time.sleep(0.1) 
        pyautogui.click(867,647)
        break  # 完成目标点击后直接终止循环
    else:
        pyautogui.click(1026,649)
    
    # 循环间隔
    time.sleep(LOOP_INTERVAL)

代码说明

  • 新增了最长运行时间限制,超出设定时间后会自动退出,完全避免无限循环的问题
  • 每轮if/elif分支完成坐标(867,647)的点击后,直接通过break跳出循环,满足终止需求
  • 新增了循环间隔,避免程序高频运行占用过高CPU导致的无响应问题,这也是此前直接套while无法正常运行的常见原因
  • 如果你的代码已经提前导入了click方法,把代码里的pyautogui.click改回click即可正常运行

内容的提问来源于stack exchange,提问作者WeirdNightowl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 06:57:00