最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python PyAutoGUI超詳細(xì)實(shí)戰(zhàn)教程 附完整教學(xué)代碼

 更新時(shí)間:2026年02月07日 10:58:54   作者:Yorlen_Zhang  
本文將從環(huán)境搭建、基礎(chǔ)配置、鼠標(biāo)自動化、鍵盤自動化、屏幕操作、高級功能、實(shí)戰(zhàn)案例七個(gè)維度展開,搭配可直接運(yùn)行的教學(xué)代碼,覆蓋新手入門到實(shí)戰(zhàn)應(yīng)用的全部核心知識點(diǎn),對Python PyAutoGUI 相關(guān)知識感興趣的朋友跟隨小編一起看看吧

本文將從環(huán)境搭建基礎(chǔ)配置、鼠標(biāo)自動化鍵盤自動化、屏幕操作、高級功能實(shí)戰(zhàn)案例七個(gè)維度展開,搭配可直接運(yùn)行的教學(xué)代碼,覆蓋新手入門到實(shí)戰(zhàn)應(yīng)用的全部核心知識點(diǎn)。

一、環(huán)境搭建:安裝 PyAutoGUI 及依賴

PyAutoGUI 依賴少量第三方庫(如 PIL/Pillow 用于圖像處理、PyScreeze 用于屏幕截圖、PyTweening 用于鼠標(biāo)緩動),安裝時(shí)會自動關(guān)聯(lián)下載,直接通過pip即可完成安裝,支持 Windows、Mac、Linux 三大系統(tǒng)。

1. 核心安裝命令

打開終端 / 命令提示符,執(zhí)行以下命令(建議使用 Python3.7 + 版本,兼容性最佳):

# 基礎(chǔ)安裝(推薦,自動安裝所有依賴)
pip install pyautogui

# 國內(nèi)鏡像源安裝(解決下載慢問題,阿里云/清華源二選一)
pip install pyautogui -i https://mirrors.aliyun.com/pypi/simple/
pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple/

2. 系統(tǒng)額外依賴(部分系統(tǒng)需手動安裝)

  • Windows:無需額外操作,安裝后可直接使用;
  • Mac:需開啟「輔助功能」權(quán)限(設(shè)置→安全性與隱私→輔助功能,勾選終端 / VSCode 等運(yùn)行 Python 的程序),否則會提示權(quán)限不足;
  • Linux:需安裝底層依賴,執(zhí)行命令sudo apt-get install scrot python3-xlib python3-pip,并開啟屏幕錄制權(quán)限。

3. 驗(yàn)證安裝成功

運(yùn)行以下代碼,若無報(bào)錯(cuò)則說明安裝成功:

import pyautogui
# 打印PyAutoGUI版本,驗(yàn)證庫導(dǎo)入成功
print("PyAutoGUI版本:", pyautogui.__version__)

二、基礎(chǔ)配置:規(guī)避風(fēng)險(xiǎn) + 全局設(shè)置

PyAutoGUI 模擬的鍵鼠操作是自動執(zhí)行的,若代碼邏輯出錯(cuò)(如無限循環(huán)點(diǎn)擊),手動終止會非常困難,因此首先要配置安全設(shè)置,同時(shí)可設(shè)置全局的操作延遲、鼠標(biāo)緩動等參數(shù),讓自動化操作更符合人類習(xí)慣。

1. 核心安全配置(必設(shè))

import pyautogui

# 1. 緊急終止:將鼠標(biāo)移到屏幕左上角(坐標(biāo)(0,0)),會觸發(fā)PyAutoGUIException,終止所有操作
pyautogui.FAILSAFE = True  # 默認(rèn)開啟,建議保持True

# 2. 操作延遲:所有鍵鼠操作后添加N秒延遲,避免操作過快(單位:秒)
pyautogui.PAUSE = 0.5  # 建議設(shè)置0.5-1秒,兼顧效率和穩(wěn)定性

# 3. 鼠標(biāo)緩動:設(shè)置鼠標(biāo)移動的平滑度,0為瞬間移動,1為最平滑(可選)
pyautogui.MINIMUM_DURATION = 0.1  # 鼠標(biāo)移動最短時(shí)間
pyautogui.MAXIMUM_DURATION = 0.5  # 鼠標(biāo)移動最長時(shí)間

2. 關(guān)鍵基礎(chǔ)函數(shù)

# 1. 獲取屏幕分辨率(返回元組:(寬度, 高度))
screen_width, screen_height = pyautogui.size()
print(f"屏幕分辨率:{screen_width}×{screen_height}")

# 2. 獲取當(dāng)前鼠標(biāo)坐標(biāo)(返回元組:(x, y))
x, y = pyautogui.position()
print(f"當(dāng)前鼠標(biāo)坐標(biāo):X={x}, Y={y}")

# 3. 暫停執(zhí)行(類似time.sleep(),更貼合PyAutoGUI使用場景)
pyautogui.sleep(2)  # 暫停2秒

坐標(biāo)說明:PyAutoGUI 的屏幕坐標(biāo)以左上角為原點(diǎn) (0,0),向右為 X 軸正方向,向下為 Y 軸正方向,所有鼠標(biāo)操作均基于此坐標(biāo)體系。

三、鼠標(biāo)自動化:核心操作全解析

鼠標(biāo)操作是 PyAutoGUI 的核心功能之一,覆蓋移動點(diǎn)擊、雙擊、右擊拖拽、滾輪滑動等所有常用操作,支持指定坐標(biāo)、自定義按鍵、設(shè)置點(diǎn)擊時(shí)長。

1. 鼠標(biāo)移動:moveTo () & moveRel ()

  • moveTo(x, y)絕對移動,將鼠標(biāo)移到屏幕指定坐標(biāo) (x,y);
  • moveRel(dx, dy)相對移動,以當(dāng)前鼠標(biāo)位置為基準(zhǔn),向 X 軸移動 dx 像素,向 Y 軸移動 dy 像素(dx/dy 為負(fù)則反向移動)。
import pyautogui

# 1. 絕對移動:移到屏幕正中央(基于屏幕分辨率計(jì)算)
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:移動耗時(shí),0.8秒(可選)

# 2. 相對移動:從當(dāng)前位置向右移動100像素,向下移動50像素
pyautogui.moveRel(100, 50, duration=0.5)

# 3. 瞬間移動:去掉duration參數(shù),鼠標(biāo)瞬間到達(dá)指定位置
pyautogui.moveTo(100, 100)

2. 鼠標(biāo)點(diǎn)擊:click () 萬能方法

click()是鼠標(biāo)點(diǎn)擊的萬能函數(shù),支持左鍵 / 右鍵 / 中鍵單點(diǎn)擊 / 雙擊、按下 / 松開分離操作,參數(shù)可靈活配置,替代leftClick()rightClick()等專用函數(shù)。

核心參數(shù)

  • x, y:點(diǎn)擊的坐標(biāo),默認(rèn)當(dāng)前鼠標(biāo)位置;
  • button:點(diǎn)擊的按鍵,可選left(左鍵,默認(rèn))、right(右鍵)、middle(中鍵);
  • clicks:點(diǎn)擊次數(shù),默認(rèn) 1 次,設(shè)為 2 則為雙擊;
  • interval:多次點(diǎn)擊的間隔時(shí)間,單位秒,默認(rèn) 0.0;
  • duration:鼠標(biāo)移到目標(biāo)坐標(biāo)的耗時(shí),單位秒,默認(rèn) 0.0。
import pyautogui

# 1. 左鍵單擊:移到(200,200)并點(diǎn)擊(默認(rèn)左鍵)
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. 中鍵單擊(滾輪點(diǎn)擊):移到(500,500)并點(diǎn)擊中鍵
pyautogui.click(500, 500, button='middle', duration=0.5)

# 專用點(diǎn)擊函數(shù)(簡化版,功能與click一致)
pyautogui.leftClick(600, 600)  # 左鍵單擊
pyautogui.rightClick(700, 700) # 右鍵單擊
pyautogui.doubleClick(800, 800)# 左鍵雙擊

3. 鼠標(biāo)按下 / 松開:mouseDown () & mouseUp ()

用于模擬長按鼠標(biāo)的操作(如拖拽、連續(xù)選中文字),分別對應(yīng) “按下鼠標(biāo)鍵” 和 “松開鼠標(biāo)鍵”,需配合使用。

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')

4. 鼠標(biāo)拖拽:dragTo () & dragRel ()

模擬按住鼠標(biāo)并拖動的操作,用于選中文字、拖拽文件 / 窗口、繪制圖形等,分為絕對拖拽和相對拖拽。

  • dragTo(x, y):絕對拖拽,從當(dāng)前位置拖到指定坐標(biāo) (x,y);
  • dragRel(dx, dy):相對拖拽,從當(dāng)前位置向 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. 相對拖拽:從當(dāng)前位置向右拖300像素,向上拖100像素(按住左鍵)
pyautogui.dragRel(300, -100, button='left', duration=0.5)

# 3. 右鍵拖拽(少數(shù)場景用,如文件右鍵拖拽復(fù)制)
pyautogui.moveTo(200, 200, duration=0.5)
pyautogui.dragTo(600, 600, button='right', duration=0.8)

5. 滾輪滑動:scroll ()

模擬鼠標(biāo)滾輪的上下滑動,正數(shù)為向上滑動,負(fù)數(shù)為向下滑動,參數(shù)為滑動的 “刻度數(shù)”(不同系統(tǒng)刻度對應(yīng)的滑動距離略有差異,一般設(shè) 10/20 即可)。

import pyautogui

# 移到屏幕中央,再操作滾輪
screen_w, screen_h = pyautogui.size()
pyautogui.moveTo(screen_w/2, screen_h/2, duration=0.5)

# 1. 向上滑動滾輪(刻度數(shù)10)
pyautogui.scroll(10)

# 2. 向下滑動滾輪(刻度數(shù)20,滑動距離更大)
pyautogui.scroll(-20)

# 3. 連續(xù)向下滑動:循環(huán)3次,每次滑10刻度
for _ in range(3):
    pyautogui.scroll(-10)
    pyautogui.sleep(0.3)

四、鍵盤自動化:輸入 / 快捷鍵全實(shí)現(xiàn)

鍵盤操作支持普通文字輸入特殊字符輸入、快捷鍵觸發(fā)按鍵長按 / 松開,能模擬人類的所有鍵盤操作,還支持多語言輸入(需系統(tǒng)輸入法配合)。

1. 普通文字輸入:typewrite ()

核心參數(shù)

  • message:要輸入的文字(字符串);
  • interval:每個(gè)字符的輸入間隔,單位秒,默認(rèn) 0.0(模擬手動打字可設(shè) 0.1-0.2);
  • pause:輸入完成后的暫停時(shí)間,單位秒,默認(rèn) None(使用全局 PAUSE)。
import pyautogui

# 先打開一個(gè)記事本/文本框(手動操作,或后續(xù)用窗口自動化)
pyautogui.sleep(3)  # 預(yù)留3秒,手動點(diǎn)擊輸入框

# 1. 快速輸入文字(無間隔)
pyautogui.typewrite("Hello PyAutoGUI!")

# 2. 模擬手動打字(每個(gè)字符間隔0.1秒)
pyautogui.typewrite("Python自動化入門", interval=0.1)

# 3. 換行輸入+組合文字
pyautogui.typewrite("\n")  # 換行(轉(zhuǎn)義字符有效)
pyautogui.typewrite("坐標(biāo)(0,0)是屏幕左上角", interval=0.05)

注意typewrite()默認(rèn)輸入英文 / 數(shù)字 / 符號,若要輸入中文,需確保系統(tǒng)輸入法為中文狀態(tài)(可手動切換,或用hotkey()模擬輸入法切換)。

2. 特殊按鍵輸入:keyDown () & keyUp () & press ()

PyAutoGUI 將所有特殊按鍵(如回車、空格、方向鍵、功能鍵)定義為字符串常量,常用特殊按鍵如下:

按鍵常量對應(yīng)實(shí)際按鍵按鍵常量對應(yīng)實(shí)際按鍵
enter回車space空格
tab制表符backspace退格
delete刪除esc退出
shift上檔鍵ctrl控制鍵
alt切換鍵winWindows 鍵(Mac 為command
up/down上下方向鍵left/right左右方向鍵
f1-f12功能鍵capslock大小寫鎖定

(1)單次按鍵:press ()

模擬按下并松開單個(gè)按鍵,簡化版的keyDown()+keyUp()

import pyautogui

pyautogui.sleep(3)  # 預(yù)留3秒,點(diǎn)擊輸入框

# 輸入文字→按回車→按空格→按退格
pyautogui.typewrite("測試特殊按鍵")
pyautogui.press("enter")  # 回車
pyautogui.press("space")  # 空格
pyautogui.press("backspace")  # 退格
pyautogui.press("delete")     # 刪除

(2)按鍵長按 / 松開:keyDown () & keyUp ()

用于模擬長按按鍵的操作(如連續(xù)按方向鍵、長按 Shift 選中文字)。

import pyautogui

pyautogui.sleep(3)

# 長按Shift→輸入大寫字母→松開Shift(模擬大寫輸入)
pyautogui.keyDown("shift")
pyautogui.typewrite("hello")  # 輸出HELLO
pyautogui.keyUp("shift")

# 長按方向鍵右→移動光標(biāo)5次→松開
for _ in range(5):
    pyautogui.keyDown("right")
    pyautogui.sleep(0.1)
pyautogui.keyUp("right")

3. 快捷鍵觸發(fā):hotkey ()

模擬組合快捷鍵的操作,如Ctrl+C復(fù)制、Ctrl+V粘貼、Ctrl+S保存,直接傳入多個(gè)按鍵常量即可,按順序執(zhí)行 “按住所有按鍵→松開所有按鍵”。

import pyautogui

pyautogui.sleep(3)  # 預(yù)留3秒,打開文本并輸入內(nèi)容

# 1. 全選:Ctrl+A(Windows/Mac通用,Mac的Ctrl實(shí)際是command,可直接用ctrl)
pyautogui.hotkey("ctrl", "a")

# 2. 復(fù)制:Ctrl+C
pyautogui.hotkey("ctrl", "c")

# 3. 粘貼:Ctrl+V
pyautogui.hotkey("ctrl", "v")

# 4. 保存:Ctrl+S
pyautogui.hotkey("ctrl", "s")

# 5. 關(guān)閉窗口:Alt+F4(Windows)/ Command+Q(Mac)
# pyautogui.hotkey("alt", "f4")

# 6. 截圖:PrintScreen(Windows)
# pyautogui.hotkey("printscreen")

Mac 系統(tǒng)注意:將ctrl替換為command即可,如hotkey("command", "c")實(shí)現(xiàn)復(fù)制。

五、屏幕操作:截圖 / 像素 / 定位全功能

PyAutoGUI 集成了屏幕截圖、像素顏色識別、圖像定位功能,能讓自動化操作 “看得見”—— 通過識別屏幕上的圖像 / 像素,實(shí)現(xiàn)精準(zhǔn)定位目標(biāo)窗口 / 按鈕,讓自動化從 “固定坐標(biāo)” 升級為 “智能識別”。

1. 屏幕截圖:screenshot ()

支持全屏截圖指定區(qū)域截圖,返回 PIL 圖像對象,可保存為圖片文件,也可直接用于圖像定位。

import pyautogui

# 1. 全屏截圖并保存為文件
screenshot1 = pyautogui.screenshot("full_screen.png")  # 保存到當(dāng)前目錄,命名為full_screen.png

# 2. 指定區(qū)域截圖:(x1, y1, 寬度, 高度),從(100,100)開始,寬400像素,高300像素
screenshot2 = pyautogui.screenshot("area_screen.png", region=(100, 100, 400, 300))

# 3. 截圖不保存,僅獲取圖像對象(用于后續(xù)像素識別/圖像定位)
screen_img = pyautogui.screenshot()

2. 像素顏色識別:pixel () & pixelMatchesColor ()

  • pixel(x, y):獲取屏幕指定坐標(biāo) (x,y) 的像素顏色,返回元組(R, G, B)(紅、綠、藍(lán)通道值,0-255);
  • pixelMatchesColor(x, y, (R, G, B)):判斷指定坐標(biāo)的像素顏色是否與目標(biāo) RGB 一致,返回布爾值,支持設(shè)置容差tolerance(解決顏色細(xì)微偏差)。
import pyautogui

# 1. 獲取指定坐標(biāo)的像素顏色
color = pyautogui.pixel(200, 200)
print(f"坐標(biāo)(200,200)的像素顏色:R={color[0]}, G={color[1]}, B={color[2]}")

# 2. 判斷像素顏色是否匹配(嚴(yán)格匹配)
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}")

3. 圖像定位:locateOnScreen () 系列(核心智能功能)

通過目標(biāo)圖片在屏幕上定位其坐標(biāo),實(shí)現(xiàn) “找到按鈕再點(diǎn)擊”“找到窗口再操作”,告別固定坐標(biāo)的局限性,是自動化的核心進(jìn)階功能。

前提準(zhǔn)備

將需要定位的目標(biāo)(如微信圖標(biāo)、確認(rèn)按鈕、記事本窗口)截圖,保存為清晰的圖片(建議 PNG 格式,去除多余背景),命名為target.png,放在 Python 腳本同目錄下。

核心函數(shù)

  • locateOnScreen(image, confidence=0.8):在屏幕上查找目標(biāo)圖片的位置,返回元組(x, y, 寬度, 高度)(目標(biāo)左上角坐標(biāo) + 寬高),confidence為匹配精度(0-1,建議 0.8,過低易誤匹配,過高易漏匹配);
  • locateCenterOnScreen(image, confidence=0.8):直接返回目標(biāo)圖片的中心坐標(biāo)(x, y),最適合配合click()使用;
  • locateAllOnScreen(image, confidence=0.8):查找屏幕上所有匹配的目標(biāo),返回迭代器,適合多目標(biāo)操作。
import pyautogui

# 注意:target.png為目標(biāo)截圖,需與腳本同目錄,confidence設(shè)置0.8(匹配精度)
# 若提示找不到圖片,可降低confidence至0.7,或重新截圖(確保目標(biāo)清晰、無遮擋)

try:
    # 1. 定位目標(biāo)中心坐標(biāo)
    target_x, target_y = pyautogui.locateCenterOnScreen("target.png", confidence=0.8)
    print(f"目標(biāo)中心坐標(biāo):({target_x}, {target_y})")

    # 2. 點(diǎn)擊目標(biāo)(智能定位+點(diǎn)擊,無需固定坐標(biāo))
    pyautogui.click(target_x, target_y, duration=0.5)

    # 3. 查找所有匹配的目標(biāo)并依次點(diǎn)擊
    all_targets = pyautogui.locateAllOnScreen("target.png", confidence=0.8)
    for target in all_targets:
        # 獲取每個(gè)目標(biāo)的中心坐標(biāo)
        center_x, center_y = pyautogui.center(target)
        pyautogui.click(center_x, center_y, duration=0.3)
        pyautogui.sleep(0.5)

except pyautogui.ImageNotFoundException:
    # 捕獲圖片未找到異常,避免程序崩潰
    print("未找到目標(biāo)圖片,請檢查截圖是否正確、目標(biāo)是否在屏幕上")

注意:若運(yùn)行時(shí)提示AttributeError: module 'cv2' has no attribute 'IMREAD_COLOR',需安裝 OpenCV 依賴:pip install opencv-python(圖像定位依賴 OpenCV 做匹配)。

六、高級功能:彈窗提示 / 批量操作 / 防檢測

1. 彈窗提示:alert ()/confirm ()/prompt ()/password ()

PyAutoGUI 內(nèi)置簡單的彈窗功能,用于自動化過程中的提示、確認(rèn)、輸入,替代系統(tǒng)彈窗,適合簡單的交互場景。

import pyautogui

# 1. 提示彈窗(只有確定按鈕)
pyautogui.alert(text="自動化操作即將開始!", title="提示", button="確定")

# 2. 確認(rèn)彈窗(確定/取消按鈕,返回點(diǎn)擊的按鈕文字)
result = pyautogui.confirm(text="是否繼續(xù)執(zhí)行自動化?", title="確認(rèn)", buttons=["確定", "取消"])
if result == "確定":
    print("執(zhí)行自動化操作")
else:
    print("取消自動化操作")

# 3. 輸入彈窗(返回輸入的文字,取消則返回None)
input_text = pyautogui.prompt(text="請輸入要輸入的內(nèi)容:", title="輸入", default="默認(rèn)文字")
if input_text:
    print(f"你輸入的內(nèi)容:{input_text}")

# 4. 密碼彈窗(輸入內(nèi)容隱藏,返回輸入的密碼,取消則返回None)
pwd = pyautogui.password(text="請輸入密碼:", title="密碼驗(yàn)證", default="", mask="*")
print(f"你輸入的密碼:{pwd}")

2. 批量操作:循環(huán) + 異常捕獲

自動化中常需要批量執(zhí)行重復(fù)操作,配合for/while循環(huán) + 異常捕獲,能讓程序更健壯,避免單次操作失敗導(dǎo)致整體崩潰。

import pyautogui

# 設(shè)置全局配置
pyautogui.FAILSAFE = True
pyautogui.PAUSE = 0.5

# 批量執(zhí)行10次點(diǎn)擊操作(模擬批量處理)
try:
    for i in range(1, 11):
        # 定位目標(biāo)并點(diǎn)擊
        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("未找到目標(biāo),停止批量操作")
except Exception as e:
    print(f"操作失敗,錯(cuò)誤信息:{e}")
finally:
    pyautogui.alert(text="批量操作結(jié)束!", title="完成", button="確定")

3. 簡單防檢測:模擬人類操作

PyAutoGUI 模擬的操作過于 “機(jī)械”,部分軟件 / 網(wǎng)站會檢測到自動化,可通過以下方式簡單規(guī)避:

  1. 設(shè)置操作間隔pyautogui.PAUSE=0.5-1秒,避免操作過快;
  2. 加入隨機(jī)延遲:導(dǎo)入random庫,在操作中加入隨機(jī)暫停,如pyautogui.sleep(random.uniform(0.2, 0.8));
  3. 鼠標(biāo)緩動移動:保留duration參數(shù),讓鼠標(biāo)移動有平滑過程,而非瞬間移動;
  4. 批量操作中偶爾暫停:每執(zhí)行 N 次操作,暫停 2-3 秒,模擬人類休息。
import pyautogui
import random

# 隨機(jī)延遲+緩動移動,模擬人類操作
pyautogui.FAILSAFE = True
pyautogui.PAUSE = random.uniform(0.3, 0.7)  # 隨機(jī)全局暫停

# 移到屏幕中央(隨機(jī)耗時(shí)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))

# 點(diǎn)擊目標(biāo)(隨機(jī)延遲后點(diǎn)擊)
pyautogui.sleep(random.uniform(0.2, 0.5))
pyautogui.click(duration=0.2)

七、實(shí)戰(zhàn)案例:辦公自動化 —— 批量新建記事本并寫入內(nèi)容

結(jié)合以上所有核心知識點(diǎn),實(shí)現(xiàn)一個(gè)實(shí)用的辦公自動化案例:模擬鍵鼠操作,批量新建 10 個(gè)記事本文件,分別寫入指定內(nèi)容并保存到桌面,全程無需手動操作。

案例要求

  1. 打開 Windows 開始菜單,搜索并啟動記事本;
  2. 依次寫入指定內(nèi)容,以 “筆記 1.txt、筆記 2.txt……” 命名;
  3. 保存到桌面,關(guān)閉記事本,循環(huán)執(zhí)行 10 次;
  4. 加入智能定位、異常捕獲、防檢測機(jī)制。

完整實(shí)戰(zhàn)代碼

import pyautogui
import random
import time

# ===================== 全局配置 =====================
pyautogui.FAILSAFE = True  # 緊急終止
pyautogui.PAUSE = random.uniform(0.4, 0.8)  # 隨機(jī)操作間隔,防檢測
CONFIDENCE = 0.75  # 圖像匹配精度
SAVE_PATH = "桌面"  # 保存路徑(Windows)

# ===================== 工具函數(shù) =====================
def random_sleep(min_t=0.2, max_t=0.6):
    """隨機(jī)暫停,模擬人類操作"""
    time.sleep(random.uniform(min_t, max_t))

def click_target(image_path):
    """智能定位并點(diǎn)擊目標(biāo),返回是否成功"""
    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"未找到目標(biāo):{image_path}")
        return False

# ===================== 主程序 =====================
if __name__ == "__main__":
    # 提前截圖:start_menu.png(開始菜單圖標(biāo))、notepad.png(記事本搜索結(jié)果)、save.png(保存按鈕)
    # 確保截圖保存在腳本同目錄,目標(biāo)無遮擋

    try:
        # 1. 點(diǎn)擊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個(gè)筆記
        for i in range(1, 11):
            # 寫入內(nèi)容
            content = f"這是第{i}個(gè)記事本文件,由PyAutoGUI自動化生成!\n生成時(shí)間:{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. 關(guān)閉記事本:Alt+F4
        pyautogui.hotkey("alt", "f4")
        pyautogui.alert(text="批量操作完成!\n共生成10個(gè)記事本文件,保存至桌面", title="成功", button="確定")

    except Exception as e:
        pyautogui.alert(text=f"操作失??!\n錯(cuò)誤信息:{str(e)}", title="失敗", button="確定")
        print(f"程序異常:{e}")

使用說明

  1. 提前截圖start_menu.png(Windows 開始菜單圖標(biāo)),保存到腳本同目錄;
  2. 運(yùn)行代碼后,程序會自動打開開始菜單、啟動記事本;
  3. 全程無需手動操作,生成的文件會自動保存到桌面,命名為 “筆記 1.txt - 筆記 10.txt”;
  4. 若某一步失敗,會彈出錯(cuò)誤彈窗并打印信息,便于排查。

八、常見問題與解決方案

  1. 權(quán)限不足(Mac/Linux):開啟系統(tǒng)的 “輔助功能”“屏幕錄制” 權(quán)限,勾選運(yùn)行 Python 的程序;
  2. 找不到目標(biāo)圖片:重新截圖(確保目標(biāo)清晰、無遮擋),降低confidence至 0.7-0.75,檢查圖片路徑是否正確;
  3. 操作坐標(biāo)偏移:確保屏幕分辨率無縮放(Windows 設(shè)置→系統(tǒng)→顯示→縮放設(shè)為 100%),Mac 關(guān)閉視網(wǎng)膜縮放;
  4. 程序無法終止:將鼠標(biāo)快速移到屏幕左上角 (0,0),觸發(fā) FAILSAFE 緊急終止;
  5. 中文輸入失敗:確保系統(tǒng)輸入法為中文狀態(tài),typewrite()僅負(fù)責(zé)輸入,不切換輸入法,可手動切換或用hotkey()模擬切換(如Ctrl+Shift);
  6. 依賴報(bào)錯(cuò):按提示安裝缺失依賴,如opencv-python(圖像定位)、pillow(圖像處理)、pyperclip(剪貼板)。

九、學(xué)習(xí)拓展與最佳實(shí)踐

  1. 配合其他庫使用
    • pyperclip:實(shí)現(xiàn)剪貼板讀寫,解決typewrite()中文輸入不便的問題;
    • tkinter/PyQt:制作圖形界面,讓自動化程序更易用;
    • schedule:實(shí)現(xiàn)定時(shí)自動化,如每天 9 點(diǎn)自動執(zhí)行辦公操作;
    • psutil:實(shí)現(xiàn)進(jìn)程管理,如自動啟動 / 關(guān)閉軟件。
  2. 最佳實(shí)踐
    • 所有自動化操作前,加入預(yù)留時(shí)間sleep(3)),方便手動切換到目標(biāo)窗口;
    • 全程使用異常捕獲try/except),避免單次操作失敗導(dǎo)致程序崩潰;
    • 盡量使用圖像定位locateCenterOnScreen()),替代固定坐標(biāo),提升程序兼容性;
    • 加入隨機(jī)延遲 / 隨機(jī)操作間隔,模擬人類操作,避免被檢測為自動化程序。
  3. 適用場景
    • 辦公自動化:批量處理 Excel/Word、新建文件、數(shù)據(jù)錄入;
    • 自動化測試:模擬用戶操作,測試軟件界面功能;
    • 重復(fù)性操作:網(wǎng)頁表單填寫、文件重命名、截圖保存;
    • 簡單游戲輔助:模擬鍵鼠操作,完成重復(fù)性游戲任務(wù)(注意遵守游戲規(guī)則)。

總結(jié)

本文從基礎(chǔ)到實(shí)戰(zhàn),全面講解了 PyAutoGUI 的核心功能,核心要點(diǎn)可總結(jié)為 3 點(diǎn):

  1. 入門先配置安全設(shè)置(FAILSAFE/PAUSE),避免自動化失控,坐標(biāo)體系以屏幕左上角為原點(diǎn);
  2. 核心操作分為鼠標(biāo)(click/moveTo/dragTo)、鍵盤(typewrite/hotkey)、** 屏幕(locateCenterOnScreen)** 三大類,圖像定位是實(shí)現(xiàn)智能自動化的關(guān)鍵;
  3. 實(shí)戰(zhàn)中需結(jié)合循環(huán)、異常捕獲、隨機(jī)延遲,讓程序更健壯、更貼近人類操作,同時(shí)配合圖像定位替代固定坐標(biāo),提升兼容性。

PyAutoGUI 的核心優(yōu)勢是簡潔易懂、快速上手,無需深入學(xué)習(xí)底層系統(tǒng) API,就能實(shí)現(xiàn)大部分鍵鼠自動化需求。建議新手從簡單案例(如自動打開記事本、輸入文字)開始,逐步過渡到復(fù)雜的批量操作,最終結(jié)合其他 Python 庫實(shí)現(xiàn)更強(qiáng)大的自動化功能。本文所有代碼均可直接復(fù)制運(yùn)行,修改少量參數(shù)即可適配你的實(shí)際場景,希望能幫助你快速掌握 Python 自動化入門技能。

到此這篇關(guān)于Python PyAutoGUI超詳細(xì)實(shí)戰(zhàn)教程 附完整教學(xué)代碼的文章就介紹到這了,更多相關(guān)Python PyAutoGUI 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

雅安市| 体育| 五河县| 海宁市| 桑植县| 谷城县| 阳高县| 成都市| 柯坪县| 汪清县| 桑植县| 剑河县| 张家口市| 五峰| 乐东| 阿瓦提县| 邯郸县| 萍乡市| 莱阳市| 广州市| 泌阳县| 紫金县| 广水市| 竹山县| 茶陵县| 金寨县| 新巴尔虎左旗| 广南县| 兴业县| 浦北县| 分宜县| 龙江县| 屯留县| 望都县| 武邑县| 惠东县| 孝昌县| 晋城| 含山县| 景宁| 绍兴市|