PyAutoGUI : 使用Python控制電腦

#20190601更新:使用圖片進行點擊動作

Image for post
Image for post
Cheat Sheet

安裝

pip install pyautogui

引入模組

import pyautogui

常用函数


#目前滑鼠坐標
pyautogui.position()
#目前螢幕解析度
pyautogui.size()
#(x,y)是否在螢幕上
x, y = 122, 244
pyautogui.onScreen(x, y)

滑鼠函數

#用num_seconds秒的时间把光标移动到(x, y)位置
num_seconds = 1.2
pyautogui.moveTo(x, y, duration=num_seconds)
#用num_seconds秒的时间把光标的X轴(水平)坐标移动xOffset,Y轴(竖直)坐标向下移动yOffsetxOffset, yOffset = 50, 100
pyautogui.moveRel(xOffset, yOffset, duration=num_seconds)
#點擊左、中、右鍵
pyautogui.rightClick(x=moveToX, y=moveToY)
pyautogui.middleClick(x=moveToX, y=moveToY)
pyautogui.doubleClick(x=moveToX, y=moveToY)
pyautogui.tripleClick(x=moveToX, y=moveToY)
#捲動
pyautogui.scroll(clicks=amount_to_scroll, x=moveToX, y=moveToY)
#移動滑鼠(若輸入None,則以目前滑鼠位置為基準)
pyautogui.moveTo(100, 200) # 光标移动到(100, 200)位置
pyautogui.moveTo(None, 500) # 光标移动到(100, 500)位置
pyautogui.moveTo(600, None) # 光标移动到(600, 500)位置
pyautogui.moveTo(100, 200, duration=2) # 用2秒移动到(100, 200)位置
#按住鼠标左键,把鼠标拖拽到(100, 200)位置
pyautogui.dragTo(100, 200, button='left')
#按住鼠标左键,用2秒钟把鼠标拖拽到(300, 400)位置
pyautogui.dragTo(300, 400, 2, button='left')
#按住鼠标右键,用2秒钟把鼠标拖拽到(30,0)位置
pyautogui.dragTo(30, 0, 2, button='right')
#點擊滑鼠
pyautogui.click()
#先移动到(100, 200)再點擊
pyautogui.click(x=100, y=200, duration=2)
#點擊滑鼠右鍵
pyautogui.click(button='right')
#雙擊左键
pyautogui.click(clicks=2)
#兩次單擊之间停0.25秒
pyautogui.click(clicks=2, interval=0.25)
#三擊右键
pyautogui.click(button='right', clicks=2, interval=0.25)
mouseDown按下;mouseUp鬆開#鼠标左键按下再松开
pyautogui.mouseDown(); pyautogui.mouseUp()
#按下鼠标右键
pyautogui.mouseDown(button='right')
#移动到(100, 200)位置,然后松开鼠标右键
pyautogui.mouseUp(button='right', x=100, y=200)
#向上滚动10格
pyautogui.scroll(10)
#向下滚动10格
pyautogui.scroll(-10)
#移动到(100, 100)位置再向上滚动10格
pyautogui.scroll(10, x=100, y=100)

鍵盤函數

#输入Hello world!
pyautogui.typewrite('Hello world!')
#每次输入间隔0.25秒,输入Hello world!
pyautogui.typewrite('Hello world!', interval=0.25)
#輸入多個按鍵
pyautogui.typewrite(['a', 'b', 'c', 'left', 'backspace', 'enter', 'f1'], interval=secs_between_keys)
#按下ENTER键
pyautogui.press('enter')
#按下F1键
pyautogui.press('f1')
#按下左方向键
pyautogui.press('left')
#連續按左鍵
pyautogui.press(['left', 'left', 'left'])
#按下`shift`键
pyautogui.keyDown('shift')
pyautogui.press('left')
pyautogui.press('left')
pyautogui.press('left')
#鬆開`shift`键
pyautogui.keyUp('shift')
#快捷鍵
pyautogui.hotkey('ctrl', 'a') # 全選
pyautogui.hotkey('ctrl', 'c') # 複製
pyautogui.hotkey('ctrl', 'v') # 貼上
pyautogui.hotkey('ctrl', 'alt', 'delete')#快捷鍵組合

截圖

#截圖
pyautogui.screenshot()
pyautogui.screenshot('foo.png')
#開啟圖片顯示X坐標、Y坐標
pyautogui.locateOnScreen('pyautogui/looks.png')
#圖片中心點X坐標、Y坐標pyautogui.locateCenterOnScreen('pyautogui/looks.png')

定位函數:使用圖片而不是座標來進行操作

在前面的功能當中,都必須使用座標的方式,才能進行自動化,相當不便,如果能讓PyAutoGUI透過圖片來進行辨識,將能省下不少的時間

#以Windows內建的計算機為例,實現1+1=2的自動化操作
#首先,我們必須透過螢幕擷取工具,將計算機當中"1"和"+"的按鈕位置擷取成圖片檔
#隨後,透過locateCenterOnScreen,進行讀取按鈕位置的動作(回傳的是座標位置)
#搭配上.click指令,即可完成操作
import pyautogui pyautogui.click((pyautogui.locateCenterOnScreen('auxillary_files/1key.png'))) pyautogui.click((pyautogui.locateCenterOnScreen('auxillary_files/pluskey.png'))) pyautogui.click((pyautogui.locateCenterOnScreen('auxillary_files/1key.png'))) pyautogui.press('enter')

Written by

Machine Learning / Deep Learning / Python / Flutter cakeresume.com/yanwei-liu

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store