PythonPyAutoGUI超详细实战教程附完整教学代码

Written by

in

文章目录
  • PyAutoGUI 依赖少量第三方库(如 PIL/Pillow 用于图像处理、PyScreeze 用于屏幕截图、PyTweening 用于鼠标缓动),安装时会自动关联下载,直接通过pip即可完成安装,支持 Windows、Mac、Linux 三大系统。
  • PyAutoGUI 模拟的键鼠操作是自动执行的,若代码逻辑出错(如无限循环点击),手动终止会非常困难,因此首先要配置安全设置,同时可设置全局的操作延迟、鼠标缓动等参数,让自动化操作更符合人类习惯。
  • 鼠标操作是 PyAutoGUI 的核心功能之一,覆盖移动、点击、双击、右击、拖拽、滚轮滑动等所有常用操作,支持指定坐标、自定义按键、设置点击时长。
  • 键盘操作支持普通文字输入、特殊字符输入、快捷键触发、按键长按 / 松开,能模拟人类的所有键盘操作,还支持多语言输入(需系统输入法配合)。
  • PyAutoGUI 集成了屏幕截图、像素颜色识别、图像定位功能,能让自动化操作 “看得见”—— 通过识别屏幕上的图像 / 像素,实现精准定位目标窗口 / 按钮,让自动化从 “固定坐标” 升级为 “智能识别”。
  • 结合以上所有核心知识点,实现一个实用的办公自动化案例:模拟键鼠操作,批量新建 10 个记事本文件,分别写入指定内容并保存到桌面,全程无需手动操作。
  • 权限不足(Mac/Linux):开启系统的 “辅助功能”“屏幕录制” 权限,勾选运行 Python 的程序; 找不到目标图片:重新截图(确保目标清晰、无遮挡),降低confidence至 0.7-0.75,检查图片路径是否正确; 操作坐标偏移:确保屏幕分辨率无缩放(Windows 设置→系统→显示→缩放设为 100%),Mac 关闭视网膜缩放; 程序无法终止:将鼠标快速移到屏幕左上角 (0,0),触发 FAILSAFE 紧急终止; 中文输入失败:确保系统输入法为中文状态,typewrite()仅负责输入,不切换输入法,可手动切换或用hotkey()模拟切换(如Ctrl+Shift); 依赖报错:按提示安装缺失依赖,如opencv-python(图像定位)、pillow(图像处理)、pyperclip(剪贴板)。
  • 配合其他库使用: pyperclip:实现剪贴板读写,解决typewrite()中文输入不便的问题; tkinter/PyQt:制作图形界面,让自动化程序更易用; schedule:实现定时自动化,如每天 9 点自动执行办公操作; psutil:实现进程管理,如自动启动 / 关闭软件。 最佳实践: 所有自动化操作前,加入预留时间(sleep(3)),方便手动切换到目标窗口; 全程使用异常捕获(try/except),避免单次操作失败导致程序崩溃; 尽量使用图像定位(locateCenterOnScreen()),替代固定坐标,提升程序兼容性; 加入随机延迟 / 随机操作间隔,模拟人类操作,避免被检测为自动化程序。 适用场景: 办公自动化:批量处理 Excel/Word、新建文件、数据录入; 自动化测试:模拟用户操作,测试软件界面功能; 重复性操作:网页表单填写、文件重命名、截图保存; 简单游戏辅助:模拟键鼠操作,完成重复性游戏任务(注意遵守游戏规则)。
  • 目录
    • 一、环境搭建:安装 PyAutoGUI 及依赖
      • 1. 核心安装命令
      • 2. 系统额外依赖(部分系统需手动安装)
      • 3. 验证安装成功
    • 二、基础配置:规避风险 + 全局设置
      • 1. 核心安全配置(必设)
      • 2. 关键基础函数
    • 三、鼠标自动化:核心操作全解析
      • 1. 鼠标移动:moveTo () & moveRel ()
      • 2. 鼠标点击:click () 万能方法
      • 3. 鼠标按下 / 松开:mouseDown () & mouseUp ()
      • 4. 鼠标拖拽:dragTo () & dragRel ()
      • 5. 滚轮滑动:scroll ()
    • 四、键盘自动化:输入 / 快捷键全实现
      • 1. 普通文字输入:typewrite ()
      • 2. 特殊按键输入:keyDown () & keyUp () & press ()
        • (1)单次按键:press ()
        • (2)按键长按 / 松开:keyDown () & keyUp ()
      • 3. 快捷键触发:hotkey ()
      • 五、屏幕操作:截图 / 像素 / 定位全功能
        • 1. 屏幕截图:screenshot ()
          • 2. 像素颜色识别:pixel () & pixelMatchesColor ()
            • 3. 图像定位:locateOnScreen () 系列(核心智能功能)
              • 前提准备
              • 核心函数
          • 六、高级功能:弹窗提示 / 批量操作 / 防检测
            • 1. 弹窗提示:alert ()/confirm ()/prompt ()/password ()
              • 2. 批量操作:循环 + 异常捕获
                • 3. 简单防检测:模拟人类操作
                • 七、实战案例:办公自动化 —— 批量新建记事本并写入内容
                  • 案例要求
                    • 完整实战代码
                    • 八、常见问题与解决方案
                      • 九、学习拓展与最佳实践
                        • 总结

                        本文将从环境搭建基础配置鼠标自动化键盘自动化屏幕操作高级功能实战案例七个维度展开,搭配可直接运行的教学代码,覆盖新手入门到实战应用的全部核心知识点。

                        PyAutoGUI 依赖少量第三方库(如 PIL/Pillow 用于图像处理、PyScreeze 用于屏幕截图、PyTweening 用于鼠标缓动),安装时会自动关联下载,直接通过pip即可完成安装,支持 Windows、Mac、Linux 三大系统。

                        打开终端 / 命令提示符,执行以下命令(建议使用 Python3.7 + 版本,兼容性最佳):

                        # 基础安装(推荐,自动安装所有依赖)
                        pip install pyautogui
                        
                        # 国内镜像源安装(解决下载慢问题,阿里云/清华源二选一)
                        pip install pyautogui -i https://mirrors.aliyun.com/pypi/simple/
                        pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple/
                        

                        • Windows:无需额外操作,安装后可直接使用;
                        • Mac:需开启「辅助功能」权限(设置→安全性与隐私→辅助功能,勾选终端 / VSCode 等运行 Python 的程序),否则会提示权限不足;
                        • Linux:需安装底层依赖,执行命令sudo apt-get install scrot python3-xlib python3-pip,并开启屏幕录制权限。

                        运行以下代码,若无报错则说明安装成功:

                        import pyautogui
                        # 打印PyAutoGUI版本,验证库导入成功
                        print("PyAutoGUI版本:", pyautogui.__version__)
                        

                        PyAutoGUI 模拟的键鼠操作是自动执行的,若代码逻辑出错(如无限循环点击),手动终止会非常困难,因此首先要配置安全设置,同时可设置全局的操作延迟、鼠标缓动等参数,让自动化操作更符合人类习惯。

                        import pyautogui
                        
                        # 1. 紧急终止:将鼠标移到屏幕左上角(坐标(0,0)),会触发PyAutoGUIException,终止所有操作
                        pyautogui.FAILSAFE = True  # 默认开启,建议保持True
                        
                        # 2. 操作延迟:所有键鼠操作后添加N秒延迟,避免操作过快(单位:秒)
                        pyautogui.PAUSE = 0.5  # 建议设置0.5-1秒,兼顾效率和稳定性
                        
                        # 3. 鼠标缓动:设置鼠标移动的平滑度,0为瞬间移动,1为最平滑(可选)
                        pyautogui.MINIMUM_DURATION = 0.1  # 鼠标移动最短时间
                        pyautogui.MAXIMUM_DURATION = 0.5  # 鼠标移动最长时间
                        

                        # 1. 获取屏幕分辨率(返回元组:(宽度, 高度))
                        screen_width, screen_height = pyautogui.size()
                        print(f"屏幕分辨率:{screen_width}×{screen_height}")
                        
                        # 2. 获取当前鼠标坐标(返回元组:(x, y))
                        x, y = pyautogui.position()
                        print(f"当前鼠标坐标:X={x}, Y={y}")
                        
                        # 3. 暂停执行(类似time.sleep(),更贴合PyAutoGUI使用场景)
                        pyautogui.sleep(2)  # 暂停2秒
                        

                        坐标说明:PyAutoGUI 的屏幕坐标以左上角为原点 (0,0),向右为 X 轴正方向,向下为 Y 轴正方向,所有鼠标操作均基于此坐标体系。

                        鼠标操作是 PyAutoGUI 的核心功能之一,覆盖移动点击双击右击拖拽滚轮滑动等所有常用操作,支持指定坐标、自定义按键、设置点击时长。

                        • moveTo(x, y)绝对移动,将鼠标移到屏幕指定坐标 (x,y);
                        • moveRel(dx, dy)相对移动,以当前鼠标位置为基准,向 X 轴移动 dx 像素,向 Y 轴移动 dy 像素(dx/dy 为负则反向移动)。
                        import pyautogui
                        
                        # 1. 绝对移动:移到屏幕正中央(基于屏幕分辨率计算)
                        screen_w, screen_h = pyautogui.size()
                        center_x, center_y = screen_w / 2, screen_h / 2
                        pyautogui.moveTo(center_x, center_y, duration=0.8)  # duration:移动耗时,0.8秒(可选)
                        
                        # 2. 相对移动:从当前位置向右移动100像素,向下移动50像素
                        pyautogui.moveRel(100, 50, duration=0.5)
                        
                        # 3. 瞬间移动:去掉duration参数,鼠标瞬间到达指定位置
                        pyautogui.moveTo(100, 100)
                        

                        click()是鼠标点击的万能函数,支持左键 / 右键 / 中键单点击 / 双击按下 / 松开分离操作,参数可灵活配置,替代leftClick()rightClick()等专用函数。

                        核心参数

                        • x, y:点击的坐标,默认当前鼠标位置;
                        • button:点击的按键,可选left(左键,默认)、right(右键)、middle(中键);
                        • clicks:点击次数,默认 1 次,设为 2 则为双击;
                        • interval:多次点击的间隔时间,单位秒,默认 0.0;
                        • duration:鼠标移到目标坐标的耗时,单位秒,默认 0.0。
                        import pyautogui
                        
                        # 1. 左键单击:移到(200,200)并点击(默认左键)
                        pyautogui.click(200, 200, duration=0.5)
                        
                        # 2. 右键单击:移到(300,300)并右击
                        pyautogui.click(300, 300, button='right', duration=0.5)
                        
                        # 3. 左键双击:移到(400,400),双击,间隔0.2秒
                        pyautogui.click(400, 400, clicks=2, interval=0.2, duration=0.5)
                        
                        # 4. 中键单击(滚轮点击):移到(500,500)并点击中键
                        pyautogui.click(500, 500, button='middle', duration=0.5)
                        
                        # 专用点击函数(简化版,功能与click一致)
                        pyautogui.leftClick(600, 600)  # 左键单击
                        pyautogui.rightClick(700, 700) # 右键单击
                        pyautogui.doubleClick(800, 800)# 左键双击
                        

                        用于模拟长按鼠标的操作(如拖拽、连续选中文字),分别对应 “按下鼠标键” 和 “松开鼠标键”,需配合使用。

                        import pyautogui
                        
                        # 移到(100,100),按下左键→暂停1秒→松开左键(模拟长按1秒)
                        pyautogui.moveTo(100, 100, duration=0.5)
                        pyautogui.mouseDown(button='left')  # 按下左键
                        pyautogui.sleep(1)
                        pyautogui.mouseUp(button='left')    # 松开左键
                        
                        # 右键长按:移到(200,200),按下右键→松开右键
                        pyautogui.moveTo(200, 200, duration=0.5)
                        pyautogui.mouseDown(button='right')
                        pyautogui.mouseUp(button='right')
                        

                        模拟按住鼠标并拖动的操作,用于选中文字、拖拽文件 / 窗口、绘制图形等,分为绝对拖拽和相对拖拽。

                        • dragTo(x, y):绝对拖拽,从当前位置拖到指定坐标 (x,y);
                        • dragRel(dx, dy):相对拖拽,从当前位置向 X/Y 轴拖拽指定像素。
                        import pyautogui
                        
                        # 1. 绝对拖拽:从(100,100)拖到(500,500)(按住左键)
                        pyautogui.moveTo(100, 100, duration=0.5)
                        pyautogui.dragTo(500, 500, button='left', duration=0.8)
                        
                        # 2. 相对拖拽:从当前位置向右拖300像素,向上拖100像素(按住左键)
                        pyautogui.dragRel(300, -100, button='left', duration=0.5)
                        
                        # 3. 右键拖拽(少数场景用,如文件右键拖拽复制)
                        pyautogui.moveTo(200, 200, duration=0.5)
                        pyautogui.dragTo(600, 600, button='right', duration=0.8)
                        

                        模拟鼠标滚轮的上下滑动,正数为向上滑动,负数为向下滑动,参数为滑动的 “刻度数”(不同系统刻度对应的滑动距离略有差异,一般设 10/20 即可)。

                        import pyautogui
                        
                        # 移到屏幕中央,再操作滚轮
                        screen_w, screen_h = pyautogui.size()
                        pyautogui.moveTo(screen_w/2, screen_h/2, duration=0.5)
                        
                        # 1. 向上滑动滚轮(刻度数10)
                        pyautogui.scroll(10)
                        
                        # 2. 向下滑动滚轮(刻度数20,滑动距离更大)
                        pyautogui.scroll(-20)
                        
                        # 3. 连续向下滑动:循环3次,每次滑10刻度
                        for _ in range(3):
                            pyautogui.scroll(-10)
                            pyautogui.sleep(0.3)
                        

                        键盘操作支持普通文字输入特殊字符输入快捷键触发按键长按 / 松开,能模拟人类的所有键盘操作,还支持多语言输入(需系统输入法配合)。

                        核心参数

                        • message:要输入的文字(字符串);
                        • interval:每个字符的输入间隔,单位秒,默认 0.0(模拟手动打字可设 0.1-0.2);
                        • pause:输入完成后的暂停时间,单位秒,默认 None(使用全局 PAUSE)。
                        import pyautogui
                        
                        # 先打开一个记事本/文本框(手动操作,或后续用窗口自动化)
                        pyautogui.sleep(3)  # 预留3秒,手动点击输入框
                        
                        # 1. 快速输入文字(无间隔)
                        pyautogui.typewrite("Hello PyAutoGUI!")
                        
                        # 2. 模拟手动打字(每个字符间隔0.1秒)
                        pyautogui.typewrite("Python自动化入门", interval=0.1)
                        
                        # 3. 换行输入+组合文字
                        pyautogui.typewrite("n")  # 换行(转义字符有效)
                        pyautogui.typewrite("坐标(0,0)是屏幕左上角", interval=0.05)
                        

                        注意typewrite()默认输入英文 / 数字 / 符号,若要输入中文,需确保系统输入法为中文状态(可手动切换,或用hotkey()模拟输入法切换)。

                        PyAutoGUI 将所有特殊按键(如回车、空格、方向键、功能键)定义为字符串常量,常用特殊按键如下:

                        按键常量 对应实际按键 按键常量 对应实际按键
                        enter 回车 space 空格
                        tab 制表符 backspace 退格
                        delete 删除 esc 退出
                        shift 上档键 ctrl 控制键
                        alt 切换键 win Windows 键(Mac 为command
                        up/down 上下方向键 left/right 左右方向键
                        f1f12 功能键 capslock 大小写锁定

                        模拟按下并松开单个按键,简化版的keyDown()+keyUp()

                        import pyautogui
                        
                        pyautogui.sleep(3)  # 预留3秒,点击输入框
                        
                        # 输入文字→按回车→按空格→按退格
                        pyautogui.typewrite("测试特殊按键")
                        pyautogui.press("enter")  # 回车
                        pyautogui.press("space")  # 空格
                        pyautogui.press("backspace")  # 退格
                        pyautogui.press("delete")     # 删除
                        

                        用于模拟长按按键的操作(如连续按方向键、长按 Shift 选中文字)。

                        import pyautogui
                        
                        pyautogui.sleep(3)
                        
                        # 长按Shift→输入大写字母→松开Shift(模拟大写输入)
                        pyautogui.keyDown("shift")
                        pyautogui.typewrite("hello")  # 输出HELLO
                        pyautogui.keyUp("shift")
                        
                        # 长按方向键右→移动光标5次→松开
                        for _ in range(5):
                            pyautogui.keyDown("right")
                            pyautogui.sleep(0.1)
                        pyautogui.keyUp("right")
                        

                        模拟组合快捷键的操作,如Ctrl+C复制、Ctrl+V粘贴、Ctrl+S保存,直接传入多个按键常量即可,按顺序执行 “按住所有按键→松开所有按键”。

                        import pyautogui
                        
                        pyautogui.sleep(3)  # 预留3秒,打开文本并输入内容
                        
                        # 1. 全选:Ctrl+A(Windows/Mac通用,Mac的Ctrl实际是command,可直接用ctrl)
                        pyautogui.hotkey("ctrl", "a")
                        
                        # 2. 复制:Ctrl+C
                        pyautogui.hotkey("ctrl", "c")
                        
                        # 3. 粘贴:Ctrl+V
                        pyautogui.hotkey("ctrl", "v")
                        
                        # 4. 保存:Ctrl+S
                        pyautogui.hotkey("ctrl", "s")
                        
                        # 5. 关闭窗口:Alt+F4(Windows)/ Command+Q(Mac)
                        # pyautogui.hotkey("alt", "f4")
                        
                        # 6. 截图:PrintScreen(Windows)
                        # pyautogui.hotkey("printscreen")
                        

                        Mac 系统注意:将ctrl替换为command即可,如hotkey("command", "c")实现复制。

                        PyAutoGUI 集成了屏幕截图、像素颜色识别、图像定位功能,能让自动化操作 “看得见”—— 通过识别屏幕上的图像 / 像素,实现精准定位目标窗口 / 按钮,让自动化从 “固定坐标” 升级为 “智能识别”。

                        支持全屏截图指定区域截图,返回 PIL 图像对象,可保存为图片文件,也可直接用于图像定位。

                        import pyautogui
                        
                        # 1. 全屏截图并保存为文件
                        screenshot1 = pyautogui.screenshot("full_screen.png")  # 保存到当前目录,命名为full_screen.png
                        
                        # 2. 指定区域截图:(x1, y1, 宽度, 高度),从(100,100)开始,宽400像素,高300像素
                        screenshot2 = pyautogui.screenshot("area_screen.png", region=(100, 100, 400, 300))
                        
                        # 3. 截图不保存,仅获取图像对象(用于后续像素识别/图像定位)
                        screen_img = pyautogui.screenshot()
                        

                        • pixel(x, y):获取屏幕指定坐标 (x,y) 的像素颜色,返回元组(R, G, B)(红、绿、蓝通道值,0-255);
                        • pixelMatchesColor(x, y, (R, G, B)):判断指定坐标的像素颜色是否与目标 RGB 一致,返回布尔值,支持设置容差tolerance(解决颜色细微偏差)。
                        import pyautogui
                        
                        # 1. 获取指定坐标的像素颜色
                        color = pyautogui.pixel(200, 200)
                        print(f"坐标(200,200)的像素颜色:R={color[0]}, G={color[1]}, B={color[2]}")
                        
                        # 2. 判断像素颜色是否匹配(严格匹配)
                        is_match = pyautogui.pixelMatchesColor(200, 200, (255, 255, 255))  # 白色
                        print(f"是否为白色:{is_match}")
                        
                        # 3. 带容差的匹配(容差tolerance=10,允许RGB各通道偏差±10)
                        is_match2 = pyautogui.pixelMatchesColor(200, 200, (255, 255, 255), tolerance=10)
                        print(f"带容差是否为白色:{is_match2}")
                        

                        通过目标图片在屏幕上定位其坐标,实现 “找到按钮再点击”“找到窗口再操作”,告别固定坐标的局限性,是自动化的核心进阶功能。

                        将需要定位的目标(如微信图标、确认按钮、记事本窗口)截图,保存为清晰的图片(建议 PNG 格式,去除多余背景),命名为target.png,放在 Python 脚本同目录下。

                        • locateOnScreen(image, confidence=0.8):在屏幕上查找目标图片的位置,返回元组(x, y, 宽度, 高度)(目标左上角坐标 + 宽高),confidence为匹配精度(0-1,建议 0.8,过低易误匹配,过高易漏匹配);
                        • locateCenterOnScreen(image, confidence=0.8):直接返回目标图片的中心坐标(x, y),最适合配合click()使用;
                        • locateAllOnScreen(image, confidence=0.8):查找屏幕上所有匹配的目标,返回迭代器,适合多目标操作。
                        import pyautogui
                        
                        # 注意:target.png为目标截图,需与脚本同目录,confidence设置0.8(匹配精度)
                        # 若提示找不到图片,可降低confidence至0.7,或重新截图(确保目标清晰、无遮挡)
                        
                        try:
                            # 1. 定位目标中心坐标
                            target_x, target_y = pyautogui.locateCenterOnScreen("target.png", confidence=0.8)
                            print(f"目标中心坐标:({target_x}, {target_y})")
                        
                            # 2. 点击目标(智能定位+点击,无需固定坐标)
                            pyautogui.click(target_x, target_y, duration=0.5)
                        
                            # 3. 查找所有匹配的目标并依次点击
                            all_targets = pyautogui.locateAllOnScreen("target.png", confidence=0.8)
                            for target in all_targets:
                                # 获取每个目标的中心坐标
                                center_x, center_y = pyautogui.center(target)
                                pyautogui.click(center_x, center_y, duration=0.3)
                                pyautogui.sleep(0.5)
                        
                        except pyautogui.ImageNotFoundException:
                            # 捕获图片未找到异常,避免程序崩溃
                            print("未找到目标图片,请检查截图是否正确、目标是否在屏幕上")
                        

                        注意:若运行时提示AttributeError: module 'cv2' has no attribute 'IMREAD_COLOR',需安装 OpenCV 依赖:pip install opencv-python(图像定位依赖 OpenCV 做匹配)。

                        PyAutoGUI 内置简单的弹窗功能,用于自动化过程中的提示、确认、输入,替代系统弹窗,适合简单的交互场景。

                        import pyautogui
                        
                        # 1. 提示弹窗(只有确定按钮)
                        pyautogui.alert(text="自动化操作即将开始!", title="提示", button="确定")
                        
                        # 2. 确认弹窗(确定/取消按钮,返回点击的按钮文字)
                        result = pyautogui.confirm(text="是否继续执行自动化?", title="确认", buttons=["确定", "取消"])
                        if result == "确定":
                            print("执行自动化操作")
                        else:
                            print("取消自动化操作")
                        
                        # 3. 输入弹窗(返回输入的文字,取消则返回None)
                        input_text = pyautogui.prompt(text="请输入要输入的内容:", title="输入", default="默认文字")
                        if input_text:
                            print(f"你输入的内容:{input_text}")
                        
                        # 4. 密码弹窗(输入内容隐藏,返回输入的密码,取消则返回None)
                        pwd = pyautogui.password(text="请输入密码:", title="密码验证", default="", mask="*")
                        print(f"你输入的密码:{pwd}")
                        

                        自动化中常需要批量执行重复操作,配合for/while循环 + 异常捕获,能让程序更健壮,避免单次操作失败导致整体崩溃。

                        import pyautogui
                        
                        # 设置全局配置
                        pyautogui.FAILSAFE = True
                        pyautogui.PAUSE = 0.5
                        
                        # 批量执行10次点击操作(模拟批量处理)
                        try:
                            for i in range(1, 11):
                                # 定位目标并点击
                                target_x, target_y = pyautogui.locateCenterOnScreen("target.png", confidence=0.8)
                                pyautogui.click(target_x, target_y)
                                print(f"第{i}次操作完成")
                                # 每5次操作暂停2秒,防检测
                                if i % 5 == 0:
                                    pyautogui.sleep(2)
                        except pyautogui.ImageNotFoundException:
                            print("未找到目标,停止批量操作")
                        except Exception as e:
                            print(f"操作失败,错误信息:{e}")
                        finally:
                            pyautogui.alert(text="批量操作结束!", title="完成", button="确定")
                        

                        PyAutoGUI 模拟的操作过于 “机械”,部分软件 / 网站会检测到自动化,可通过以下方式简单规避:

                        1. 设置操作间隔pyautogui.PAUSE=0.5-1秒,避免操作过快;
                        2. 加入随机延迟:导入random库,在操作中加入随机暂停,如pyautogui.sleep(random.uniform(0.2, 0.8))
                        3. 鼠标缓动移动:保留duration参数,让鼠标移动有平滑过程,而非瞬间移动;
                        4. 批量操作中偶尔暂停:每执行 N 次操作,暂停 2-3 秒,模拟人类休息。
                        import pyautogui
                        import random
                        
                        # 随机延迟+缓动移动,模拟人类操作
                        pyautogui.FAILSAFE = True
                        pyautogui.PAUSE = random.uniform(0.3, 0.7)  # 随机全局暂停
                        
                        # 移到屏幕中央(随机耗时0.3-0.9秒)
                        screen_w, screen_h = pyautogui.size()
                        pyautogui.moveTo(screen_w/2, screen_h/2, duration=random.uniform(0.3, 0.9))
                        
                        # 点击目标(随机延迟后点击)
                        pyautogui.sleep(random.uniform(0.2, 0.5))
                        pyautogui.click(duration=0.2)
                        

                        结合以上所有核心知识点,实现一个实用的办公自动化案例:模拟键鼠操作,批量新建 10 个记事本文件,分别写入指定内容并保存到桌面,全程无需手动操作。

                        1. 打开 Windows 开始菜单,搜索并启动记事本;
                        2. 依次写入指定内容,以 “笔记 1.txt、笔记 2.txt……” 命名;
                        3. 保存到桌面,关闭记事本,循环执行 10 次;
                        4. 加入智能定位、异常捕获、防检测机制。

                        import pyautogui
                        import random
                        import time
                        
                        # ===================== 全局配置 =====================
                        pyautogui.FAILSAFE = True  # 紧急终止
                        pyautogui.PAUSE = random.uniform(0.4, 0.8)  # 随机操作间隔,防检测
                        CONFIDENCE = 0.75  # 图像匹配精度
                        SAVE_PATH = "桌面"  # 保存路径(Windows)
                        
                        # ===================== 工具函数 =====================
                        def random_sleep(min_t=0.2, max_t=0.6):
                            """随机暂停,模拟人类操作"""
                            time.sleep(random.uniform(min_t, max_t))
                        
                        def click_target(image_path):
                            """智能定位并点击目标,返回是否成功"""
                            try:
                                x, y = pyautogui.locateCenterOnScreen(image_path, confidence=CONFIDENCE)
                                pyautogui.moveTo(x, y, duration=random.uniform(0.3, 0.7))
                                random_sleep()
                                pyautogui.click()
                                return True
                            except pyautogui.ImageNotFoundException:
                                print(f"未找到目标:{image_path}")
                                return False
                        
                        # ===================== 主程序 =====================
                        if __name__ == "__main__":
                            # 提前截图:start_menu.png(开始菜单图标)、notepad.png(记事本搜索结果)、save.png(保存按钮)
                            # 确保截图保存在脚本同目录,目标无遮挡
                        
                            try:
                                # 1. 点击Windows开始菜单
                                if not click_target("start_menu.png"):
                                    raise Exception("打开开始菜单失败")
                                random_sleep(0.5, 1.0)
                        
                                # 2. 输入“记事本”并回车启动
                                pyautogui.typewrite("记事本", interval=random.uniform(0.1, 0.2))
                                random_sleep()
                                pyautogui.press("enter")
                                random_sleep(1.0, 1.5)  # 等待记事本启动
                        
                                # 3. 批量新建10个笔记
                                for i in range(1, 11):
                                    # 写入内容
                                    content = f"这是第{i}个记事本文件,由PyAutoGUI自动化生成!n生成时间:{time.strftime('%Y-%m-%d %H:%M:%S')}"
                                    pyautogui.typewrite(content, interval=random.uniform(0.05, 0.1))
                                    random_sleep()
                        
                                    # 快捷键保存:Ctrl+S
                                    pyautogui.hotkey("ctrl", "s")
                                    random_sleep(0.8, 1.2)  # 等待保存窗口弹出
                        
                                    # 输入文件名并保存
                                    pyautogui.typewrite(f"笔记{i}.txt", interval=random.uniform(0.1, 0.2))
                                    random_sleep()
                                    pyautogui.press("enter")
                                    random_sleep()
                        
                                    # 新建空白记事本:Ctrl+N
                                    pyautogui.hotkey("ctrl", "n")
                                    random_sleep(0.5, 1.0)
                        
                                # 4. 关闭记事本:Alt+F4
                                pyautogui.hotkey("alt", "f4")
                                pyautogui.alert(text="批量操作完成!n共生成10个记事本文件,保存至桌面", title="成功", button="确定")
                        
                            except Exception as e:
                                pyautogui.alert(text=f"操作失败!n错误信息:{str(e)}", title="失败", button="确定")
                                print(f"程序异常:{e}")
                        

                        使用说明

                        1. 提前截图start_menu.png(Windows 开始菜单图标),保存到脚本同目录;
                        2. 运行代码后,程序会自动打开开始菜单、启动记事本;
                        3. 全程无需手动操作,生成的文件会自动保存到桌面,命名为 “笔记 1.txt – 笔记 10.txt”;
                        4. 若某一步失败,会弹出错误弹窗并打印信息,便于排查。

                        1. 权限不足(Mac/Linux):开启系统的 “辅助功能”“屏幕录制” 权限,勾选运行 Python 的程序;
                        2. 找不到目标图片:重新截图(确保目标清晰、无遮挡),降低confidence至 0.7-0.75,检查图片路径是否正确;
                        3. 操作坐标偏移:确保屏幕分辨率无缩放(Windows 设置→系统→显示→缩放设为 100%),Mac 关闭视网膜缩放;
                        4. 程序无法终止:将鼠标快速移到屏幕左上角 (0,0),触发 FAILSAFE 紧急终止;
                        5. 中文输入失败:确保系统输入法为中文状态,typewrite()仅负责输入,不切换输入法,可手动切换或用hotkey()模拟切换(如Ctrl+Shift);
                        6. 依赖报错:按提示安装缺失依赖,如opencv-python(图像定位)、pillow(图像处理)、pyperclip(剪贴板)。

                        1. 配合其他库使用
                          • pyperclip:实现剪贴板读写,解决typewrite()中文输入不便的问题;
                          • tkinter/PyQt:制作图形界面,让自动化程序更易用;
                          • schedule:实现定时自动化,如每天 9 点自动执行办公操作;
                          • psutil:实现进程管理,如自动启动 / 关闭软件。
                        2. 最佳实践
                          • 所有自动化操作前,加入预留时间sleep(3)),方便手动切换到目标窗口;
                          • 全程使用异常捕获try/except),避免单次操作失败导致程序崩溃;
                          • 尽量使用图像定位locateCenterOnScreen()),替代固定坐标,提升程序兼容性;
                          • 加入随机延迟 / 随机操作间隔,模拟人类操作,避免被检测为自动化程序。
                        3. 适用场景
                          • 办公自动化:批量处理 Excel/Word、新建文件、数据录入;
                          • 自动化测试:模拟用户操作,测试软件界面功能;
                          • 重复性操作:网页表单填写、文件重命名、截图保存;
                          • 简单游戏辅助:模拟键鼠操作,完成重复性游戏任务(注意遵守游戏规则)。

                        本文从基础到实战,全面讲解了 PyAutoGUI 的核心功能,核心要点可总结为 3 点:

                        1. 入门先配置安全设置(FAILSAFE/PAUSE),避免自动化失控,坐标体系以屏幕左上角为原点;
                        2. 核心操作分为鼠标(click/moveTo/dragTo)键盘(typewrite/hotkey)、** 屏幕(locateCenterOnScreen)** 三大类,图像定位是实现智能自动化的关键;
                        3. 实战中需结合循环、异常捕获、随机延迟,让程序更健壮、更贴近人类操作,同时配合图像定位替代固定坐标,提升兼容性。

                        PyAutoGUI 的核心优势是简洁易懂、快速上手,无需深入学习底层系统 API,就能实现大部分键鼠自动化需求。建议新手从简单案例(如自动打开记事本、输入文字)开始,逐步过渡到复杂的批量操作,最终结合其他 Python 库实现更强大的自动化功能。本文所有代码均可直接复制运行,修改少量参数即可适配你的实际场景,希望能帮助你快速掌握 Python 自动化入门技能。

                        到此这篇关于Python PyAutoGUI超详细实战教程 附完整教学代码的文章就介绍到这了,更多相关Python PyAutoGUI 内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

                        您可能感兴趣的文章:

                        • Python中PyAutoGUI 库的使用
                        • Windows自动化Python pyautogui RPA操作实现
                        • python pyautogui实现图片识别点击失败后重试功能
                        • python实现模拟键盘鼠标重复性操作Pyautogui
                        • python自动化神器pyautogui使用步骤
                        • Python自动操作神器PyAutoGUI的使用教程
                        • Python利用PyAutoGUI模块实现控制鼠标键盘
                        • Python中PyAutoGUI帮助文档(推荐!)
                        • Python中pyautogui库的使用方法汇总

                        站内搜索