PyAutoGUI自动化入门文档

发布于:2024-12-05 ⋅ 阅读:(61) ⋅ 点赞:(0)

这不得不提我们的办公神器,PyAutoGUI啦!

轻量级办公软件,主要的功能有:

  • 键鼠控制
  • 屏幕截图
  • 多种提示框

好,我们从安装开始,汉化这个文档吧!

Chapter 1. 安装

安装操作还是比较简单的:

⏪Windows平台:

pip install pyautogui

⏪Mac\Linux平台:

pip3 install pyautogui

Chapter 2. 鼠标事件

对于自动化程序来说,我们需要一个退出接口,以免陷入死循环或者怎么样。那么PyAuto GUI提供了原生接口:

pyautogui.PAUSE=2.5
pyautogui.FAILSAFE=True

fail-safe模式启用的时候,将鼠标移动到左上角,即可退出程序。

下面是有关的API!

2.1 屏幕与鼠标位置

获取屏幕尺寸很简单,只需要pgi.size()即可返回一个元组,同样的,获取鼠标当前位置也是pgi.position(),原生接口还提供了一个检查方法:pgi.onScreen(x,y),就是检查某个元素是否在屏幕上,可以用于边界触发条件。

2.2 鼠标移动事件

原生接口提供了一个moveTo()方法,注意,moveTo(x,y)是将当前位置的(X,Y)变成(x,y)!如果参数有一个是None,那么就表示当前位置,不用移动啦!

对于需要时间控制的程序,还可以传入duration参数,如:

pyautogui.moveTo(x,y,2)

单位是Second

前面的moveTo()方法是绝对位置,那么move()就是相对移动,即相对当前位置移动多少pixel.

实际上pyautogui.moveRelmove方法类似,只不过还没完善

2.3 鼠标拖动事件

这个与鼠标移动事件是差不多的,所以接口也差不多,但是呢可以提供一个参数button,用于控制拖动的时候是哪个键位生效。

pyautogui.dragTo(100,200,2,button='right')
pyautogui.drag(100,200,2,button='middle')
pyautogui.dragTo(100,200,2,button='left')

此外,所有的接口提供了Tween/Easing参数,这些参数用来控制鼠标移动规则的,例如:

Tween Describe
pgi.easeInQuad 开始慢
pgi.easeOutQuad 结束慢
pgi.easeInOutQuad 中间慢
pgi.easeInBounce 回弹
pgi.easeInElastic 更慢的回弹

还是比较好玩的?建议自己测试一下

2.4 鼠标点击事件

这个就是正常的click()方法,如果不带参数就是当前位置。参数配置简单来说如下:

Parameters Describe
x x位置
y y位置
button 点击键位
clicks 点击次数
interval 点击间隔

如果将clicks设置成2,那就相当于doubleClick(),当然还有tripleClick()rightClick()这种衍生事件。

然后呢,还有持续性的动作:

pgi.mouseDown(button,x,y)
pgi.mouseUp(button,x,y)

这里相当于一直点击。

其他的比如鼠标滑动事件:

pgi.scroll(10,x,y) # 滚轮上滑
pgi.scroll(-10,x,y) # 滚轮下滑

LinuxOs平台里面还可以横着滑…

pgi.hscroll()

Chapter 3. 键盘事件

说完鼠标事件我们再来看看键盘事件。最基本的写入方法是write(),我们做一个实验:

pgi.write("在这里写入:实验成功!",interval=0.25)

what can I say man, Only English?

好的事实证明了只能写入英语,没事了

另外按下某个按钮的接口是press(),工作基本如下:

pgi.press('enter')
pgi.press('esc')
pgi.press('left') # 左方向键

同时,press可以传入一组预先设置好的指令:

pgi.press(['left','right','up'])

如果想要重复的话,可以直接使用:

pgi.press('left',presses=3)

模拟按键还有一个接口hold,模拟某个键按下的情况:

with pgi.hold('shift'):
	pgi.press(['left']*3)

等价于:

pgi.keyDown('shift')
pgi.press('left')
pgi.press('left')
pgi.press('left')
pgi.keyUp('shift')

对于组合键,我们可以用这个方法:

pgi.hotkey('ctrl','shift','esc',interval=2)

也是等价于嵌套的keyDown

哦下面是一组键位:

['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(',
')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`',
'a', 'b', 'c', 'd', 'e','f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~',
'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace',
'browserback', 'browserfavorites', 'browserforward', 'browserhome',
'browserrefresh', 'browsersearch', 'browserstop', 'capslock', 'clear',
'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal', 'del', 'delete',
'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10',
'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20',
'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9',
'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert', 'junja',
'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail',
'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack',
'nonconvert', 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6',
'num7', 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn',
'pgup', 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn',
'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator',
'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab',
'up', 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen',
'command', 'option', 'optionleft', 'optionright']

实际上到这里主要的功能就讲完啦!当然我们可以再看看后续的补充~!


Chapter 4. 消息框

这里有一些消息框,我们列出如下:

alert(text='',title='',button='ok')

confirm(text='',title='',buttons=['ok','cancel'])
# 这个选项框会返回你选的结果,以str形式返回

prompt(text='', title='' , default='')
# 这个选项框可以输入你的想法,也就是文本框啦,然后又能以str形式返回

password(text='',title='',default='',mask='*')
# 密码框,一样的

Chapter 5. 截图功能

如果是直接使用screenshot方法,会返回一个Image对象,就是PIL可以直接用的那种,如果传入一组参数,那么会在这个路径下保存。

同时,我们也可以控制截图的位置:

gui.screenshot(region=(0,0,300,400))

这里有个比较重要的方法,用来匹配屏幕上的图像的!
即:

pgi.locateOnScreen('png',confidence=0.9)

返回什么呢,就是返回一个Box对象,分别是左上右下,可以像访问数组一样访问他们,同时也可以用一组点对承接:

x,y=pgi.locateOnScreen('png',confidence=0.9,region=)

对于这个Box对象,我们可以获取中心点:

bp=pgi.center(bp)

同时也提供了批量匹配的接口:

pgi.locateAllOnScreen('png')

此外,我们也可以对像素进行匹配,方法如下:

pgi.pixelMatchesColor(100,200,(130,135,144),tolerance=10)

返回的话就是True or False



网站公告

今日签到

点亮在社区的每一天
去签到

热门文章