1 安装
pip install pyautogui
2 学习使用
2.1 加载模块
import pyautogui
2.2 获取信息类
电脑屏幕的左上角是位置(0,0),向右X坐标增加,向下Y坐标增加
# 获取屏幕尺寸
screenWidth, screenHeight = pyautogui.size()
# 获取鼠标当前位置
currentMouseX, currentMouseY = pyautogui.position()
用onScreen()
函数来检查XY坐标是否在屏幕上,如果在屏幕上返回True
:
In [1]: import pyautogui
In [2]: pyautogui.onScreen(0, 0)
Out[2]: True
In [3]: pyautogui.onScreen(0, -1)
Out[3]: False
2.3 进行操作类
2.3.1 鼠标
知识点:
import pyautogui
# 函数将鼠标立即移动到屏幕的指定位置:x, y为坐标, duration指定所需秒数
pyautogui.moveTo(x=None, y=None, duration=0.0)
# 函数相对于当前的位置移动鼠标
pyautogui.moveRel(xOffset=None, yOffset=None, duration=0.0)
# 在相应位置点击鼠标, clicks为点击次数, interval为时间间隔, button属性可以有:left\middle\right
pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button="left")
# 按下鼠标按键
pyautogui.mouseDown(x=None, y=None, button="left", duration=0.0)
# 释放鼠标按键
pyautogui.mouseUp(x=None, y=None, button="left", duration=0.0)
# 执行双击鼠标左键
pyautogui.doubleClick(x=None, y=None, interval=0.0, button="left", duration=0.0)
# 执行双击右键
pyautogui.rightClick(x=None, y=None, interval=0.0, duration=0.0)
# 执行双击中键
pyautogui.middleClick(x=None, y=None, interval=0.0, duration=0.0)
# 将鼠标拖动到一个新的位置
pyautogui.dragTo(x=None, y=None, duration=0.0, button="left")
# 将鼠标拖动到相对当前位置的位置
pyautogui.dragRel(xOffset=0, yOffset=0, duration=0.0, button="left")
# 滚动鼠标, clicks为滚动像素
pyautogui.scroll(clicks=100, x=None, y=None)
缓动/渐变(Tween / Easing)函数:
缓动/渐变函数的作用是让光标的移动更炫。如果你不需要用到的话,你可以忽略这些。
缓动/渐变函数可以改变光标移动过程的速度和方向。通常鼠标是匀速直线运动,这就是线性缓动/渐变函数。PyAutoGUI有30种缓动/渐变函数,可以通过pyautogui.ease*?
查看。其中,pyautogui.easeInQuad()
函数可以用于moveTo()
,moveRel()
,dragTo()
和dragRel()
函数,光标移动呈现先慢后快的效果,整个过程的时间还是和原来一样。而pyautogui.easeOutQuad
函数的效果相反:光标开始移动很快,然后慢慢减速。pyautogui.easeOutElastic
是弹簧效果,首先越过终点,然后再反弹回来。例如:
import pyautogui
# 开始很慢,不断加速
pyautogui.moveTo(100, 100, 2, pyautogui.easeInQuad)
# 开始很快,不断减速
pyautogui.moveTo(100, 100, 2, pyautogui.easeOutQuad)
# 开始和结束都快,中间比较慢
pyautogui.moveTo(100, 100, 2, pyautogui.easeInOutQuad)
# 一步一徘徊前进
pyautogui.moveTo(100, 100, 2, pyautogui.easeInBounce)
# 徘徊幅度更大,甚至超过起点和终点
pyautogui.moveTo(100, 100, 2, pyautogui.easeInElastic)
实践运用:
import pyautogui
# 获取屏幕尺寸
screenWidth, screenHeight = pyautogui.size()
# 鼠标移动到屏幕中心
pyautogui.moveTo(screenWidth / 2, screenHeight / 2)
# 将鼠标移动到固定位置
pyautogui.moveTo(100, 100)
# 用 "1秒" 的时间移动到固定位置
pyautogui.moveTo(100, 200, duration=1)
# 将鼠标移动到相对当前 "下方100" 的位置
pyautogui.moveRel(0, 100)
# 鼠标左键拖拽到屏幕 "100,200" 的位置
pyautogui.dragTo(100, 200, button='left')
# 鼠标左键用 "2秒" 拖拽到屏幕 "300,400" 的位置
pyautogui.dragTo(300, 400, 2, button='left')
# 鼠标左键用 "2秒" 拖拽到相对当前 "右边30" 的位置
pyautogui.dragRel(30, 0, 2, button='left')
# 鼠标左键单击
pyautogui.click()
# 鼠标左键单击 "100,200" 位置
pyautogui.click(x=100, y=200)
# 鼠标左键双击
pyautogui.doubleClick()
# 鼠标左键三击
pyautogui.tripleClick()
# 鼠标右键单击
pyautogui.click(button='right')
# 鼠标右键单击
pyautogui.rightClick()
# 鼠标右键间隔0.25秒单击3次
pyautogui.click(button='right', clicks=3, interval=0.25)
# 鼠标左键放下
pyautogui.mouseDown()
# 鼠标左键抬起
pyautogui.mouseUp()
# 鼠标滚轮上滚10
pyautogui.scroll(10)
# 鼠标滚轮下滚10
pyautogui.scroll(-10)
2.3.2 键盘
知识点:
import pyautogui
# 输入字符串, interval为时间间隔
pyautogui.typewrite("message", interval=0.1)
# 按下某个键
pyautogui.keyDown("A")
# 松开某个键
pyautogui.keyUp("A")
# 一次完整的击键,前面两个函数的组合, presses为按键次数
pyautogui.press("B", presses=5, interval=0.2)
# 直接使用热键函数
pyautogui.hotkey('ctrl', 'a')
PyAutoGUI键盘表:
‘enter’(或‘return’ 或 ‘\n’) | 回车 |
‘esc’ | ESC键 |
‘shiftleft’, ‘shiftright’ | 左右SHIFT键 |
‘altleft’, ‘altright’ | 左右ALT键 |
‘ctrlleft’, ‘ctrlright’ | 左右CTRL键 |
‘tab’ (‘\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’, ‘volumedown’,‘volumeup’ | 有些键盘没有 |
‘pause’ | PAUSE键 |
‘capslock’, ‘numlock’,‘scrolllock’ | CAPS LOCK, NUM LOCK, 和 SCROLLLOCK 键 |
‘insert’ | INS或INSERT键 |
‘printscreen’ | PRTSC 或 PRINT SCREEN键 |
‘winleft’, ‘winright’ | Win键 |
‘command’ | Mac OS X command键 |
实践应用:
import pyautogui
# 输入一个字符串
pyautogui.typewrite('Hello world!')
# 每个字母间隔0.25秒输入一个字符串
pyautogui.typewrite('Hello world!', interval=0.25)
# 键入 "a", 然后敲击左方向键, 再键入 "b".
pyautogui.typewrite(['a', 'left', 'b'])
# 按键
pyautogui.press('esc')
# 连续按键
pyautogui.press(['left', 'left', 'left', 'left', 'left', 'left'])
# 键盘按下
pyautogui.keyDown('shift')
# 键盘释放
pyautogui.keyUp('shift')
# 热键按住ctrl的同时按下c
pyautogui.hotkey('ctrl', 'c')