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

Python中randomClick函数调用报NameError,求错误原因及解决方法

错误原因与修复方案

错误原因

  • 函数调用早于定义:Python是逐行解释执行的,你在代码前半部分调用randomClick()时,这个函数的定义语句在调用之后,解释器还未加载该函数,因此触发NameError。
  • 参数传递错误:调用randomClick(file1)时,file1未被定义,你实际通过gui.locateOnScreen获取的变量是box,应该传递这个变量。
  • 逻辑冗余冲突:你定义的randomClick函数已经包含了移动、延迟、点击的完整流程,但外部又额外写了gui.moveTo()和gui.click(),会导致重复执行操作,逻辑混乱。

修复后的代码

import pyautogui as gui
import random
from time import sleep

def randomClick(box):
    # 生成区域内随机坐标
    x_click = int(random.uniform(box.left, box.left + box.width))
    y_click = int(random.uniform(box.top, box.top + box.height))
    # 随机速度移动到目标点
    gui.moveTo(x_click, y_click, duration=random.uniform(0.1, 0.2))
    sleep(random.uniform(0.2, 0.3))
    gui.click()
    sleep(random.uniform(1, 2))

# 先定位屏幕上的目标区域
box = gui.locateOnScreen('file1.png')
# 检查是否成功定位,避免None报错
if box:
    randomClick(box)
else:
    print("未找到目标图片file1.png")

额外说明

  • 移除了未使用的库(keyboard、numpy、win32api等),精简代码。
  • 添加了box的非空判断,防止定位失败时调用randomClick导致新的报错。
  • 删除了注释掉的旧函数代码,保持代码整洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:45:34