只要在电脑前用双手可以完成的动作,PyAutoGUI 都可以替您完成!

PyAutoGUI 是什么

一个 Python 脚本控制鼠标和键盘来自动执行与其他应用程序的交互的 Python 模块。

PyAutoGUI 可在 Windows,macOS 和 Linux 上运行。

PyAutoGUI 具有以下功能

  1. 移动鼠标并单击或在其他应用程序的窗口中键入。
  2. 向应用程序发送击键(例如,填写表格)。
  3. 截取屏幕截图,并给出图像(例如,按钮或复选框的图像),然后在屏幕上找到它。
  4. 找到应用程序的窗口,然后移动,调整大小,最大化,最小化或关闭它(当前仅Windows)
  5. 在 GUI 自动化脚本运行时,显示用于用户交互的消息框。

一些限制

  1. PyAutoGUI 仅在 Windows,macOS 和 Linux 上运行
  2. 现在 PyAutoGUI 仅处理主监视器
  3. PyAutoGUI 目前不支持执行 OCR
  4. PyAutoGUI 目前不可以进行键盘记录或检测当前是否按下了按键。

不过不是什么大问题。

安装

1
pip3 install pyautogui

引用

1
import pyautogui

准备工作

一个能获取当前鼠标坐标的软件。

基本功能

1
2
3
4
5
6
>>> pyautogui.position()  # current mouse x and y
(968, 56)
>>> pyautogui.size() # current screen resolution width and height
(1920, 1080)
>>> pyautogui.onScreen(x, y) # True if x & y are within the screen.
True

在每次PyAutoGUI调用之后设置1秒的暂停:

1
2
>>> import pyautogui
>>> pyautogui.PAUSE = 1

移动鼠标

1
2
3
>>> pyautogui.moveTo(x, y, duration=num_seconds)  # move mouse to XY coordinates over num_second seconds

>>> pyautogui.moveRel(xOffset, yOffset, duration=num_seconds) # move mouse relative to its current position

注:如果duration为0或未指定,则立即移动。注意:在Mac上拖动不能立即进行。

拖拽

1
2
3
>>> pyautogui.dragTo(x, y, duration=num_seconds)  # drag mouse to XY

>>> pyautogui.dragRel(xOffset, yOffset, duration=num_seconds) # drag mouse relative to its current position

单击 鼠标

1
2
3
4
5
6
>>> pyautogui.click(x=moveToX, y=moveToY, clicks=num_of_clicks, interval=secs_between_clicks, button='left')

>>> pyautogui.rightClick(x=moveToX, y=moveToY)
>>> pyautogui.middleClick(x=moveToX, y=moveToY)
>>> pyautogui.doubleClick(x=moveToX, y=moveToY)
>>> pyautogui.tripleClick(x=moveToX, y=moveToY)

滚动

正向滚动将向上滚动,负向滚动将向下滚动:

1
>>> pyautogui.scroll(amount_to_scroll, x=moveToX, y=moveToY)

鼠标按下和放开

1
2
>>> pyautogui.mouseDown(x=moveToX, y=moveToY, button='left')
>>> pyautogui.mouseUp(x=moveToX, y=moveToY, button='left')

键盘输入

1
2
3
>>> pyautogui.typewrite('Hello world!\n', interval=secs_between_keys)  # useful for entering text, newline is Enter

>>> pyautogui.typewrite(['a', 'b', 'c', 'left', 'backspace', 'enter', 'f1'], interval=secs_between_keys)

快捷键

1
2
3
>>> pyautogui.hotkey('ctrl', 'c')  # ctrl-c to copy

>>> pyautogui.hotkey('ctrl', 'v') # ctrl-v to paste

mac 上有问题,后续研究

键盘按下和放开

1
2
>>> pyautogui.keyDown(key_name)
>>> pyautogui.keyUp(key_name)

消息框

1
2
3
4
5
>>> pyautogui.alert('This displays some text with an OK button.')
>>> pyautogui.confirm('This displays text and has an OK and Cancel button.')
'OK'
>>> pyautogui.prompt('This lets the user type in a string and press OK.')
'This is what I typed in.'

屏幕截图

1
2
3
4
>>> pyautogui.screenshot()  # returns a Pillow/PIL Image object
<PIL.Image.Image image mode=RGB size=1920x1080 at 0x24C3EF0>
>>> pyautogui.screenshot('foo.png') # returns a Pillow/PIL Image object, and saves it to a file
<PIL.Image.Image image mode=RGB size=1920x1080 at 0x31AA198>

如何利用 PyAutoGUI

分析自己要用 它 帮你做的事情。

比如,先移动到哪里,再点击 哪里,再点击,在移动…..

其实很好做的。

视频课程

https://www.bilibili.com/video/BV1Uv411i76Z/