6.4 操纵鼠标:PyAutoGUI
6.4.1 说明
PyAutoGUI是一个Python的GUI自动化工具,它可以让程序自动控制鼠标和键盘的一系列操作。它能够模拟鼠标的移动、点击、拖拽等操作,以及键盘的按键按下和释放等操作。PyAutoGUI还提供了其他功能,如获取屏幕分辨率、判断鼠标是否在屏幕上、显示提示框等。它可以在没有安装其他依赖库的情况下独立运行。PyAutoGUI对于自动化任务、测试脚本的编写以及一些趣味性的项目都非常有用。
注意,PyAutoGUI是跨平台的,它不仅支持Windows,还支持Linux和MAC。
安装:
>>> pip install PyAutoGUI
6.4.2 position()
获取当前鼠标光标的坐标。元组类型,第1个为x坐标,第2个为y坐标。
py
import pyautogui
from icecream import ic
x, y = pyautogui.position()
ic(x, y)
21:41:25|> x: 719, y: 470
6.4.3 size()
获取当前屏幕的分辨率,返回结果为元组类型,包括2个元素,分别是:横坐标像素和纵坐标像素。
py
import pyautogui
from icecream import ic
x, y = pyautogui.size()
ic(x, y)
21:42:10|> x: 2560, y: 1440
6.4.4 onScreen(x, y=None)
返回给定的xy坐标是否在主屏幕上。请注意,此函数不适用于辅助屏幕。
py
import pyautogui
from icecream import ic
ic(pyautogui.onScreen(1220, 68))
ic(pyautogui.onScreen(12200, 68))
21:45:48|> pyautogui.onScreen(1220, 68): True
21:45:48|> pyautogui.onScreen(12200, 68): False
6.4.5 mouseDown、mouseUp
模拟将鼠标移动到目标位置后按下或弹起。
参数
x=None 横坐标
y=None 纵坐标
button=PRIMARY 要按下的鼠标按键,可选的有:left、middle、right、primary、secondary,默认为primary
duration 持续时间
tween 渐变
logScreenshot 是否截图,True or False
_pause 是否暂停,True or False
py
import pyautogui
pyautogui.mouseDown(287, 220, logScreenshot=True)
pyautogui.mouseUp(287, 220, logScreenshot=True)
将鼠标移动到指定位置后,按下并弹起,并且在按下和弹起的时候进行全屏截图。生成的图片将会存放在代码文件所在的文件夹内。
6.4.6 click、leftClick、rightClick、middleClick、doubleClick、tripleClick
模拟将鼠标移动到目标位置后完整的点击(包括按下和弹起)。通过这些函数的名字也能知道他们的区别。
参数
x=None 横坐标
y=None 纵坐标
clicks 点击的次数
button=PRIMARY 要按下的鼠标按键,可选的有:left、middle、right、primary、secondary,默认为primary
duration 持续时间
tween 渐变
logScreenshot 是否截图,True or False
_pause 是否暂停,True or False
这个方法和之前的mouseDown、mouseUp差不多,这里也就不多介绍了。
6.4.7 scroll、hscroll、vscroll
滚动鼠标滑轮进行滚动屏幕,滚动的方向(水平、垂直)和系统有关。windows系统中scroll为垂直方向。其它2个则为对应的方向。
参数
Clicks: 滚动量,正数向上滚动,将上方内容滚动到下方(显示更上面的内容),负数反之
X: (int, float, None, tuple, optional): 滚动时,鼠标光标横坐标所在位置,如果是tuple类型则因为光标的横纵坐标
Y: (int, float, None, optional): 滚动时,鼠标光标纵坐标所在位置
LogScreenShot: 是否要截图
6.4.8 moveTo
将鼠标移动到某个位置。
参数
x=None 横坐标
y=None 纵坐标
duration 持续时间
tween 渐变
logScreenshot 是否截图,True or False
_pause 是否暂停,True or False
6.4.9 dragTo
参数
x=None 横坐标
y=None 纵坐标
duration 持续时间
tween 渐变
button=PRIMARY 要按下的鼠标按键,可选的有:left、middle、right、primary、secondary,默认为primary
logScreenshot 是否截图,True or False
_pause 是否暂停,True or False
mouseDownUp 是否要在最后点击一次
拖动某个软件到屏幕右边
py
import pyautogui
pyautogui.moveTo(422, 23)
pyautogui.dragTo(1422, 23, duration=0.5)