上一节主要介绍了Keyboard相关操作,本节来重点介绍一下Mouse Control。
在介绍鼠标操作之前,首先得了解Pyautogui是如何获取屏幕相关信息的,如分辨率;鼠标当前位置。
import pyautogui
# 获取本机分辨率
print("本台计算机分辨率为:",pyautogui.size(),type(pyautogui.size())) # Size(width=1920, height=1080) <class 'pyautogui.Size'>
# 获取当前鼠标位置
x, y = pyautogui.position()
print("目前光标的位置:",pyautogui.position(),type(pyautogui.position())) # Point(x=842, y=346) <class 'pyautogui.Point'>
# 检查XY是否在允许的分辨率内
print(pyautogui.onScreen(0, 0)) # True
print(pyautogui.onScreen(1920, 1080)) # False
# 原因分析:因为最左上角的点为0,0;故最右下角的点为(1919,1079)
下面是正式的鼠标操作,涉及到move()、moveTo()、drag()、dragTo()、click()、clickTo()、doubleClick()等方法。
pyautogui.move():相当在当前位置移动x,y个像素。
import pyautogui
pyautogui.move(0,100) # 在当前位置鼠标向下移动100px
# 第一个参数为X方向上的移动,左负右正
# 第二个参数为Y方向上的移动,上负下正
pyautogui.moveTo():大致功能和move()相近,但是多了两个参数
import pyautogui
# moveTo鼠标光标移至传递的X和Y整数坐标,duration为移动到目标点的指定耗时,tween为移动的方式
# X,Y的坐标假如为浮点数,则向下取整
pyautogui.moveTo(100, 200, duration=3, tween=pyautogui.easeInQuad) # 以先快后慢的方式移动到100,200点,耗时3S
# tween具体有哪些方式,列出来。至于是啥花样的,大家自行百度
easeInQuad = _couldNotImportPyTweening
easeOutQuad = _couldNotImportPyTweening
easeInOutQuad = _couldNotImportPyTweening
easeInCubic = _couldNotImportPyTweening
easeOutCubic = _couldNotImportPyTweening
easeInOutCubic = _couldNotImportPyTweening
easeInQuart = _couldNotImportPyTweening
easeOutQuart = _couldNotImportPyTweening
easeInOutQuart = _couldNotImportPyTweening
easeInQuint = _couldNotImportPyTweening
easeOutQuint = _couldNotImportPyTweening
easeInOutQuint = _couldNotImportPyTweening
easeInSine = _couldNotImportPyTweening
easeOutSine = _couldNotImportPyTweening
easeInOutSine = _couldNotImportPyTweening
easeInExpo = _couldNotImportPyTweening
easeOutExpo = _couldNotImportPyTweening
easeInOutExpo = _couldNotImportPyTweening
easeInCirc = _couldNotImportPyTweening
easeOutCirc = _couldNotImportPyTweening
easeInOutCirc = _couldNotImportPyTweening
easeInElastic = _couldNotImportPyTweening
easeOutElastic = _couldNotImportPyTweening
easeInOutElastic = _couldNotImportPyTweening
easeInBack = _couldNotImportPyTweening
easeOutBack = _couldNotImportPyTweening
easeInOutBack = _couldNotImportPyTweening
easeInBounce = _couldNotImportPyTweening
easeOutBounce = _couldNotImportPyTweening
easeInOutBounce = _couldNotImportPyTweening
pyautogui.drag()、pyautogui.dragTo():按住鼠标移动到指定点
import pyautogui
# 除了X,Y坐标以外多了三个参数
# duration:移动所耗时
# tween:移动的方式(先快后慢、先后快中间慢等)
# button: 使用的按键(LEFT、RIGHT)
pyautogui.dragTo(100, 200, 2, button='left') # 按住左键,用2s时间移动到100,200点的位置
pyautogui.drag(100, 200, 2, button='left') # 按住左键,从当前位置向右移动100px,向下移动200px,用时2s
pyautogui.dragRel(100, 200, 2, button='left') # 在pyautogui 1.0版本后,drag会取代dragRel
鼠标的移动大致就两类,一类是拖拽的形式(drag)、一类是单纯移动到指定点的形式(move)。鼠标的点击也分为单击、双击、滚轮操作等。
pyautogui.click(): 点击操作
import pyautogui
pyautogui.click() # 鼠标在当前位置进行点击
# clicks: 点击次数,默认1次。次数为2,等于一次双击操作
# interval: 两次点击间隔时长,默认0.0;大于1.0后。默认为点击一次
# duration: 所耗时长,默认0.0。
pyautogui.click(100, 200, clicks=2, interval=0.1, duration=3.0)
# 耗时3S,将鼠标移动到100,200的位置,点击2次,两次点击间隔0.1S
# 也可以传入一个字符串。字符串格式可以为jpg、png等。类似于一个桌面找图,并点击
# 图片一定要和.py文件放在同一个目录下!
pyautogui.click('demo.png')
#ps: 本人亲测,jpg图片寻找比png慢大概200毫秒,也不知道是否准确。
# 下面的使用方法、参数和pyautogui.click()大致相同
# 执行鼠标左键单击。
pyautogui.leftClick()
# 执行鼠标右键单击。
pyautogui.rightClick()
# 执行鼠标中键单击。
pyautogui.middleClick()
pyautogui.doubleClick():双击操作
import pyautogui
# interval:和click一样,间隔时长,大于1.0则不执行
# button:默认为左键,也可以改成RIGHT
# duration: 默认0.0,也可以设置执行所耗时间
# tween: 默认无变化。具体详见move()方法
pyautogui.doubleClick()
pyautogui.tripleClick():三次点击操作
import pyautogui
# 执行三次单击。
pyautogui.tripleClick()
pyautogui.mouseDown()&pyautogui.mouseUp():和keyDown()&keyUp()相仿,主要用于执行拖拽操作
import pyautogui
pyautogui.mouseDown(x=100, y=200, button='left') # 将鼠标移动到100,200点后,按住左键不动可实现拖拽。
pyautogui.mouseUp(x=100, y=200, button='left')
# demo:将文件1拖拽到文件2的位置
pyautogui.click('文件1.png')
x1,y1 = pyautogui.position() # 获取文件1的x,y坐标
pyautogui.click('文件2.png')
x2,y2 = pyautogui.position() # 获取文件2的x,y坐标
pyautogui.mouseDown(x1, y1, button='left')
pyautogui.moveTo(x2, y2)
pyautogui.mouseUp('left')
pyautogui.scroll():鼠标的滚轮操作
import pyautogui
# 执行鼠标滚轮的滚动。垂直滚动还是水平滚动取决于底层操作系统。
pyautogui.scroll(50) # scroll up 50 "clicks"
pyautogui.scroll(-50) # scroll down 50 "clicks"
# 如有指定的需求。(目前仅有Linux支持)水平滚动
pyautogui.hscroll()
# 垂直滚动
pyautogui.vscroll()
上述的功能大致可以实现,基本的鼠标操作。自己觉得还挺详细的,若有不清楚的地方请留言!