日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python调用PyAutoGUI模块

發(fā)布時間:2025/5/22 python 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python调用PyAutoGUI模块 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • GUI自動化工具
    • 鼠標(biāo)
      • 鼠標(biāo)移動
      • 鼠標(biāo)拖動
      • 鼠標(biāo) 補間/緩動
      • 鼠標(biāo)點擊
      • 鼠標(biāo)的滾動功能
    • 鍵盤

GUI自動化工具

PyAutoGUI可在Windows / Mac / Linux和Python 2&3上運行。
pip install pyautogui

import pyautogui

注意:在運行PyAutoGUI庫時請加入以下2行代碼,防止程序失控,進行補救措施

故障保護機制
在每次PyAutoGUI調(diào)用之后設(shè)置2.5秒的暫停:

pyautogui.PAUSE = 2.5 # 為所有的PyAutoGUI函數(shù)增加延遲。默認延遲時間是0.1秒。

當(dāng)故障安全模式為時True,將鼠標(biāo)移到左上角將會彈出pyautogui.FailSafeException,這可能會中止當(dāng)前運行的程序:

pyautogui.FAILSAFE = True # 保護措施,避免失控

鼠標(biāo)

  • size() 方法
  • pyautogui.size() # 返回屏幕寬高像素數(shù)的元組

    如果屏幕分辨率為1920*1080,那么左上角的坐標(biāo)為(0,0)
    右下角的坐標(biāo)是(1919,1079)(因為坐標(biāo)始于0,而不是1)
    X坐標(biāo)從左側(cè)的0開始,向右增加。
    Y坐標(biāo)從頂部的0開始,向下增加。

  • position() 方法
  • pyautogui.position() # 返回鼠標(biāo)光標(biāo)的當(dāng)前X和Y坐標(biāo)
  • onScreen() 方法
  • pyautogui.onScreen(x, y) # 檢查XY坐標(biāo)是否在屏幕上 返回True 和 False

    鼠標(biāo)移動

  • moveTo() 方法
  • pyautogui.moveTo(x, y) # 將鼠標(biāo)光標(biāo)移動到傳遞的X和Y整數(shù)坐標(biāo) pyautogui.moveTo(None, y) # None可以為坐標(biāo)傳遞該值,以表示“當(dāng)前鼠標(biāo)光標(biāo)位置 pyautogui.moveTo(x, None)

    例如

    pyautogui.moveTo(100, 200) # 鼠標(biāo)移動到x軸100像素,y軸200像素的位置 pyautogui.moveTo(None, 300) # 鼠標(biāo)移動到x軸100像素,y軸300像素的位置 pyautogui.moveTo(400, None) # 鼠標(biāo)移動到x軸400像素,y軸300像素的位置 pyautogui.moveTo(x, y, [duration = t]) # 在給定時間內(nèi)將鼠標(biāo)移動到屏幕指定位置 duration(以秒為單位)

    x,y是目標(biāo)位置的橫縱坐標(biāo),duration指定鼠標(biāo)光標(biāo)移動到目標(biāo)位置所需要的秒數(shù),
    t可以為整數(shù)或浮點數(shù),省略duration參數(shù)表示立即將光標(biāo)移動到指定位置
    (在PyAutoGUI函數(shù)中,所有的duration關(guān)鍵字參數(shù)都是可選的)
    如果持續(xù)時間小于pyautogui.MINIMUM_DURATION該運動將是即時的。默認pyautogui.MINIMUM_DURATION值為0.1。

  • move()方法
  • pyautogui.move(x, y) # 將鼠標(biāo)光標(biāo)相對于其當(dāng)前位置移動幾個像素

    這里的x,y不再是目標(biāo)位置的坐標(biāo),而是偏移量
    例如:

    pyautogui.moveTo(100, 200) # 鼠標(biāo)移動到x軸100像素,y軸200像素的位置 pyautogui.move(100,0) # 表示光標(biāo)相對于當(dāng)前所在位置(100, 200)向右移動100個像素(200, 200)

    鼠標(biāo)拖動

  • dragTo() 方法
  • pyautogui.dragTo(x, y, [duration=t]) #將鼠標(biāo)拖動到指定位置

    PyAutoGUI的dragTo()和drag()功能也有類似的參數(shù)作為moveTo()和move()功能。此外,他們有一個button可以被設(shè)置為關(guān)鍵字’left’,‘middle’,'right’在拖動時按住該鼠標(biāo)鍵不放。

    pyautogui.dragTo(x, y, [duration=t], button='left') # 按住鼠標(biāo)左鍵,將鼠標(biāo)拖動到指定位置 pyautogui.dragTo(x, y, [duration=t], button='middle') # 按住鼠標(biāo)中鍵,將鼠標(biāo)拖動到指定位置 pyautogui.dragTo(x, y, [duration=t], button='right') # 按住鼠標(biāo)右鍵,將鼠標(biāo)拖動到指定位置
  • drag()方法
  • pyautogui.drag(x, y, [duration=t]) # 將鼠標(biāo)光標(biāo)相對于其當(dāng)前位置移動幾個像素

    這里的x,y不再是目標(biāo)位置的坐標(biāo),而是偏移量
    使用方法和dragTo()一樣

    鼠標(biāo) 補間/緩動

    補間或緩動功能指示鼠標(biāo)移至目的地時的進度。通常,當(dāng)在一段時間內(nèi)移動鼠標(biāo)時,鼠標(biāo)將以恒定的速度沿直線直接移向目標(biāo)。這稱為線性補間或線性緩動函數(shù)。

    PyAutoGUI在pyautogui模塊中還有其他補間功能。
    moveTo(),move(),dragTo()和drag()方法都可以使用該功能,可通過傳遞第四個參數(shù)來使鼠標(biāo)光標(biāo)以指定的線性函數(shù)進行移動。
    總持續(xù)時間仍與傳遞給函數(shù)的參數(shù)相同。

    pyautogui.easeInQuad:開始緩慢移動,然后朝著目標(biāo)加快。
    pyautogui.easeOutQuad:鼠標(biāo)指針開始移動速度快,但速度逐漸減慢
    pyautogui.easeInOutQuad:開始和結(jié)束快,中間慢
    pyautogui.easeOutQuad是相反的:把鼠標(biāo)指針開始移動速度快,但速度減慢,因為它接近目的地。
    pyautogui.easeOutElastic將沖過目標(biāo)進行“橡皮筋”式來回移動直到它穩(wěn)定在目的地。

    pyautogui.moveTo(x, y, [duration=t], pyautogui.easeInQuad) # 開始緩慢移動,然后朝著目標(biāo)加快 pyautogui.moveTo(x, y, [duration=t], pyautogui.easeOutQuad) # 鼠標(biāo)指針開始移動速度快,但速度逐漸減慢 pyautogui.moveTo(x, y, [duration=t], pyautogui.easeInOutQuad) # 開始和結(jié)束快,中間慢 pyautogui.moveTo(x, y, [duration=t], pyautogui.easeInBounce) # 鼠標(biāo)移動到目標(biāo)位置進行反彈 pyautogui.moveTo(x, y, [duration=t], pyautogui.easeInElastic) # 將沖過目標(biāo)進行“橡皮筋”式來回移動直到它穩(wěn)定在目的地

    這些補間功能是從Al Sweigart的PyTweening模塊復(fù)制的:
    https://github.com/asweigart/pytweening
    不必安裝此模塊即可使用補間功能。

    如果要創(chuàng)建自己的補間函數(shù),請定義一個函數(shù),該函數(shù)在0.0(代表鼠標(biāo)移動的起點)和1.0(代表鼠標(biāo)移動的終點)之間使用單個float參數(shù),并在0.0和之間返回一個float值1.0。

    鼠標(biāo)點擊

    click() 、rightClick() 、middleClick()、 doubleClick()、tripleClick()均可傳遞以下參數(shù):
    x和y:將鼠標(biāo)移動到目標(biāo)區(qū)域
    duration:鼠標(biāo)移動目標(biāo)位置的時間
    button:要指定不同的鼠標(biāo)鍵點擊,‘left’ 左鍵,'middle’中鍵, 'right’右鍵
    clicks:要進行多次單擊,請將整數(shù)傳遞給clicks關(guān)鍵字參數(shù)
    interval:指定點擊之間的暫停量(以秒為單位)

  • click() 方法
  • pyautogui.click() # 默認在當(dāng)前光標(biāo)位置,使用鼠標(biāo)左鍵點擊

    moveTo()與click() 在點擊之前合并調(diào)用,可以為click()傳遞x, y參數(shù):

    pyautogui.click(x, y) # 移動到目標(biāo)位置,使用鼠標(biāo)左鍵點擊

    要指定不同的鼠標(biāo)鍵點擊,傳遞’left’,‘right’,'middle’等參數(shù):

    pyautogui.click(x, y, [button='left/right/middle'])

    要進行多次點擊,請將整數(shù)傳遞給clicks關(guān)鍵字參數(shù)。

    pyautogui.click(clicks=2) # 連續(xù)點擊2次pyautogui.click(clicks=2) # 連續(xù)點擊3次

    interval關(guān)鍵字參數(shù),是以指定兩次點擊之間的暫停時間(以秒為單位)

    pyautogui.click(clicks=2, interval=0.25) # 連續(xù)點擊2次,兩次點擊之間的暫停時間0.25秒

    綜合使用

    pyautogui.click(x=100, y=200, duration=2, clicks=2, interval=0.25, button='right')# 移動到x軸100像素 y軸200像素的位置,移動時間為2秒# 進行右鍵點擊2次,每次點擊間隔時間0.25秒
  • rightClick() 方法
  • pyautogui.rightClick() # 默認在當(dāng)前光標(biāo)位置,使用鼠標(biāo)右鍵點擊
  • middleClick() 方法
  • pyautogui.middleClick() # 默認在當(dāng)前光標(biāo)位置,使用鼠標(biāo)中鍵點擊
  • doubleClick() 方法
  • pyautogui.doubleClick() # 默認在當(dāng)前光標(biāo)位置,雙擊鼠標(biāo)左鍵
  • tripleClick() 方法
  • pyautogui.tripleClick() # 默認在當(dāng)前光標(biāo)位置,鼠標(biāo)左鍵點擊三次
  • mouseDown()和mouseUp()方法
  • pyautogui.mouseDown() # 按下鼠標(biāo)左鍵 pyautogui.mouseUp() # 釋放鼠標(biāo)左鍵

    鼠標(biāo)單擊和拖動包括按下鼠標(biāo)按鈕并向上釋放鼠標(biāo)按鈕。
    如果要單獨執(zhí)行這些操作,請調(diào)用mouseDown()和mouseUp()方法。

    例如

    pyautogui.mouseDown(button='left', x=100, y=200, duration=2) # 先移動到目標(biāo)位置按下鼠標(biāo)左鍵(開始) pyautogui.mouseUp(button='left', x=300, y=400, duration=2) # 移動到目標(biāo)位置后釋放鼠標(biāo)左鍵(結(jié)束)

    此方法是將 dragTo()方法的拖動效果 拆開使用。可控制鼠標(biāo)的點擊和釋放效果。

    鼠標(biāo)的滾動功能

    可以通過調(diào)用scroll()方法并傳遞整數(shù)來滾動鼠標(biāo)滾輪。

    pyautogui.scroll(50) # 控制窗口上下滾動(滾動發(fā)生在鼠標(biāo)的當(dāng)前位置)填入正數(shù)為向上滾動 pyautogui.scroll(-50) # 控制窗口上下滾動(滾動發(fā)生在鼠標(biāo)的當(dāng)前位置)填入負數(shù)為向下滾動

    在不同平臺上,滾動量會有所不同。(可選)可以傳遞x和y參數(shù),以在執(zhí)行滾動之前移動鼠標(biāo)光標(biāo)。
    例如

    pyautogui.scroll(10, x=100, y=200) # 移動到目標(biāo)位置,滾輪向上滾動

    在OS X和Linux平臺上,PyAutoGUI也可以通過調(diào)用hscroll()函數(shù)執(zhí)行水平滾動。

    pyautogui.hscroll(10) # 向右滾動 pyautogui.hscroll(-10) # 向左滾動

    鍵盤

  • typewrite() 方法
    typewrite() 方法 模擬鍵盤輸
  • pyautogui.typewrite('Hello world!') # 從鍵盤輸入Hello world(向文本框發(fā)送字符串)

    要在按下每個字符鍵之間添加延遲間隔,請為interval關(guān)鍵字參數(shù)傳遞一個int或float值。

    pyautogui.typewrite('Hello world!', interval=0.25) # 從鍵盤輸入Hello world,每隔0.25秒輸入一個字符

    除了單個字符串,還可以向typewrite()函數(shù)傳遞鍵字符串的列表
    例如:

    pyautogui.typewrite(['V','V','left','left','c','a','t']) # 按'V'鍵,'V'鍵,然后按左箭頭兩次,然后按'c'、'a'、't'# 輸出結(jié)果為catVV

    typewrite()只能按下單字符鍵,無法按Shift或ctrl等組合鍵。
    注意:只能輸入英文

  • press()方法
  • pyautogui.press('enter') # 按下回車鍵(按下并釋放)pyautogui.press('left') # 按下左鍵 (按下并釋放)

    還可以將字符串列表傳遞給press()
    例如

    pyautogui.press(['left', 'left', 'left'])

    利用press()方法可以實現(xiàn)中文輸入
    例如

    pyautogui.press('shift') # 切換輸入法的中英文 pyautogui.press(['n', 'i'], interval=0.5) # press 可以對單個字符或者列表進行操作 pyautogui.press(['h', 'a', 'o'], interval=0.5) pyautogui.press(['s', 'h', 'i'], interval=0.5) pyautogui.press(['j', 'i', 'e'], interval=0.5) pyautogui.press(' ')
  • keyDown()和 keyUp()方法
    press()方法實際上只是keyDown()和keyUp()函數(shù)的包裝,它們模擬按下一個鍵然后釋放它。
    例如:
  • pyautogui.keyDown('shift') # 按下shift鍵(不進行釋放) pyautogui.press('left') # 按左箭頭鍵 (按下后釋放) pyautogui.press('left') # 按左箭頭鍵 (按下后釋放) pyautogui.press('left') # 按左箭頭鍵 (按下后釋放) pyautogui.keyUp('shift') # 釋放shift鍵(進行釋放)

    總結(jié)
    pyautogui.keyDown() #根據(jù)傳入的鍵字符串,向計算機發(fā)送虛擬的按鍵(按下)
    pyautogui.keyUp() #根據(jù)傳入的鍵字符串,向計算機發(fā)送虛擬的釋放(釋放)
    pyautogui.press() #前面兩個方法的封裝,模擬完整的擊鍵(按下并釋放)

  • hotkey()方法
    為了方便快捷地按下熱鍵或鍵盤快捷鍵,hotkey()可以傳遞幾個鍵的字符串,這些字符串將按順序按下,然后以相反的順序釋放。
    例如:
  • pyautogui.hotkey('ctrl', 'shift', 'esc')# 相當(dāng)于這段代碼pyautogui.keyDown('ctrl')pyautogui.keyDown('shift')pyautogui.keyDown('esc')pyautogui.keyUp('esc')pyautogui.keyUp('shift')pyautogui.keyUp('ctrl')

    例如:

    pyautogui.hotkey('ctrl','c')# 相當(dāng)于pyautogui.keyDown('ctrl')pyautogui.keyDown('c')pyautogui.keyUp('c')pyautogui.keyUp('ctrl') pyautogui.hotkey('ctrl','v')# 相當(dāng)于pyautogui.keyDown('ctrl')pyautogui.keyDown('v')pyautogui.keyUp('v')pyautogui.keyUp('ctrl')

    pyautogui.hotkey() # 接收多個字符串參數(shù),順序按下,再按相反的順序釋放

  • 通過對以下是有效字符串press(),keyDown(),keyUp(),和hotkey()功能:

    [’\t’, ‘\n’, ‘\r’, ’ ‘, ‘!’, ‘"’, ‘#’, ‘$’, ‘%’, ‘&’, "’", ‘(’,
    ‘)’, ‘*’, ‘+’, ‘,’, ‘-’, ‘.’, ‘/’, ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’,
    ‘8’, ‘9’, ‘:’, ‘;’, ‘<’, ‘=’, ‘>’, ‘?’, ‘@’, ‘[’, ‘\’, ‘]’, ‘^’, ‘_’, ‘`’,
    ‘a(chǎn)’, ‘b’, ‘c’, ‘d’, ‘e’,‘f’, ‘g’, ‘h’, ‘i’, ‘j’, ‘k’, ‘l’, ‘m’, ‘n’, ‘o’,
    ‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’, ‘z’, ‘{’, ‘|’, ‘}’, ‘~’,
    ‘a(chǎn)ccept’, ‘a(chǎn)dd’, ‘a(chǎn)lt’, ‘a(chǎn)ltleft’, ‘a(chǎn)ltright’, ‘a(chǎn)pps’, ‘backspace’,
    ‘browserback’, ‘browserfavorites’, ‘browserforward’, ‘browserhome’,
    ‘browserrefresh’, ‘browsersearch’, ‘browserstop’, ‘capslock’, ‘clear’,
    ‘convert’, ‘ctrl’, ‘ctrlleft’, ‘ctrlright’, ‘decimal’, ‘del’, ‘delete’,
    ‘divide’, ‘down’, ‘end’, ‘enter’, ‘esc’, ‘escape’, ‘execute’, ‘f1’, ‘f10’,
    ‘f11’, ‘f12’, ‘f13’, ‘f14’, ‘f15’, ‘f16’, ‘f17’, ‘f18’, ‘f19’, ‘f2’, ‘f20’,
    ‘f21’, ‘f22’, ‘f23’, ‘f24’, ‘f3’, ‘f4’, ‘f5’, ‘f6’, ‘f7’, ‘f8’, ‘f9’,
    ‘final’, ‘fn’, ‘hanguel’, ‘hangul’, ‘hanja’, ‘help’, ‘home’, ‘insert’, ‘junja’,
    ‘kana’, ‘kanji’, ‘launchapp1’, ‘launchapp2’, ‘launchmail’,
    ‘launchmediaselect’, ‘left’, ‘modechange’, ‘multiply’, ‘nexttrack’,
    ‘nonconvert’, ‘num0’, ‘num1’, ‘num2’, ‘num3’, ‘num4’, ‘num5’, ‘num6’,
    ‘num7’, ‘num8’, ‘num9’, ‘numlock’, ‘pagedown’, ‘pageup’, ‘pause’, ‘pgdn’,
    ‘pgup’, ‘playpause’, ‘prevtrack’, ‘print’, ‘printscreen’, ‘prntscrn’,
    ‘prtsc’, ‘prtscr’, ‘return’, ‘right’, ‘scrolllock’, ‘select’, ‘separator’,
    ‘shift’, ‘shiftleft’, ‘shiftright’, ‘sleep’, ‘space’, ‘stop’, ‘subtract’, ‘tab’,
    ‘up’, ‘volumedown’, ‘volumemute’, ‘volumeup’, ‘win’, ‘winleft’, ‘winright’, ‘yen’,
    ‘command’, ‘option’, ‘optionleft’, ‘optionright’]

  • 完整的鍵盤鍵字符串如下:

  • 鍵盤鍵字符串含義
    ‘a(chǎn)’,‘b’,‘c’,‘A’,‘C’,‘1’,‘2’,‘3’,’!’,’@’,’#'等單個字符的鍵
    ‘enter’回車
    ‘esc’ESC鍵
    ‘shiftleft’,‘shiftright’左右Shift鍵
    ‘a(chǎn)ltleft’,‘a(chǎn)ltright’左右Alt鍵
    ‘ctrlleft’,‘ctrlright’左右Ctrl鍵
    ‘tab’(or ‘\t’)Tab鍵
    ‘backspace’,‘delete’Backspace鍵和Delete鍵
    ‘pageup’,‘pagedown’Page Up 和Page Down鍵
    ‘home’,‘end’Home鍵和End鍵
    ‘up’,‘down’,‘left’,‘right’上下左右箭頭鍵
    ‘f1’,‘f2’,'f3’等F1至F12鍵
    ‘volumemute’,‘volumeup’,volumedown’靜音,放大音量和減小音量鍵
    ‘pause’ 暫停鍵
    ‘capslock’,‘numlock’,‘scrolllock’Caps Lock,Num Lock和 Scroll Lock鍵
    ‘insert’Insert鍵
    ‘printscreen’Prtsc或Print Screen鍵
    ‘winleft’,‘winright’左右Win鍵(在windows上)
    ‘command’Command鍵(在OS X上)
    ‘option’Option鍵(在OS X上)

    總結(jié)

    以上是生活随笔為你收集整理的Python调用PyAutoGUI模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。