最容易学习的pyautogui鼠标控制

上一节主要介绍了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()

上述的功能大致可以实现,基本的鼠标操作。自己觉得还挺详细的,若有不清楚的地方请留言!

  • 11
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值