asweigart/pyautogui
A cross-platform GUI automation Python module for human beings. Used to programmatically control the mouse & keyboard. 一个跨平台自动化python模块,以编程的方式控制鼠标键盘。
换言之,就是可以用python代码代替鼠标键盘操作。
如果你在访问github网络慢,可以访问我搬到gitee上的仓库
robinmo/pyautogui
翻译如下:
PyAutoGUI
PyAutoGUI 是一个跨平台自动化python模块,以编程的方式控制鼠标键盘。 (如果你还未安装python可以自行搜索对应平台python安装及环境配置教程)
pip install pyautogui
完整的文档地址pyautogui.readthedocs.org
简体中文文档见 muxuezi.github.io/posts/doc-p… (可惜访问的时候,404)
如果你安装python需要帮助,请参阅installpython3.com/
依赖
PyAutoGUI 支持 Python 2 和 3. 如果从Pypi安装请使用包管理工具pip安装。
pip install pyautogui
或者python3
pip3 install pyautogui
Windows 下没有依赖. Win32 扩展不需要安装.
macOS 需要安装rubicon-objc模块(如果你用pip命令安装则什么都不用管,它自己回去下载安装依赖).
Linux 需要安装python3-xlib (or python-xlib for Python 2) 模块.
Pillow 需要安装, 在Linux下,需要额外的库,以确保 Pillow的 PNG/JPEG正常处理. 请参阅:
如果你想要为pyautogui贡献有些代码的话,你需要从Pypi安装以下模块:
- pyscreeze
- pymsgbox
- pytweening
使用范例
1.键鼠控制
PyAutoGUI的坐标原点在屏幕左上角。x坐标从左到右增加,y坐标从上到下增加(这个跟数学坐标系相反)。 比如一个1920 x 1080 像素大小的屏幕, 左上角是(0,0),右上角是(1919,0),左下角是(0,1079),右下角是(1919,1079).
目前,PyAutoGUI 只作用于主屏幕,在扩展屏它是不可靠的(在多屏幕下,鼠标的一些函数可能没有作用,跟你的系统和版本有关系).
所有PyAutoGUI操作的按键操作都会被传递给激活的窗口(或者桌面),就物理键盘操作一样。
import pyautogui
screenWidth, screenHeight = pyautogui.size() # 返回两个整数,如果是多屏幕,返回主屏幕的尺寸的两个整数。
currentMouseX, currentMouseY = pyautogui.position() # 返回两个整数,鼠标光标当前的坐标
pyautogui.moveTo(100, 150) # 移动鼠标到(100, 150)(注意y坐标是向下的).
pyautogui.click() # 在当前鼠标所在位置单击
pyautogui.click(200, 220) # 在(200, 220)处单击.
pyautogui.move(None, 10) # 相对当前位置,鼠标的y坐标向下移动10个像素.
pyautogui.doubleClick() # 在鼠标当前位置双击。
pyautogui.moveTo(500, 500, duration=2, tween=pyautogui.easeInOutQuad) # 使用淡入淡出方式在2秒内移动到(500, 500)
pyautogui.write('Hello world!', interval=0.25) # 每个字符键入间隔0.25秒,敲出'Hello world.
pyautogui.press('esc') # 模拟敲击ESC键,就是按下松开esc(就是键盘左上角那个键)
pyautogui.keyDown('shift') # 按下shift键(此时没有松开)
pyautogui.write(['left', 'left', 'left', 'left', 'left', 'left'])
pyautogui.keyUp('shift') # 松开shift键
pyautogui.hotkey('ctrl', 'c') # 按下组合键ctrol + c
消息框
这个需要安装tkinter,windows下的python是自带的,mac下由于版本问题,需要另行安装(到现在我也还没装上)
import pyautogui
pyautogui.alert('这是一个消息弹框') # 弹出消息 "这是一个消息弹框"带确认按钮
pyautogui.confirm('继续?') # 弹窗带确认和取消按钮
pyautogui.confirm('请选择', buttons=['A', 'B', 'C']) # 弹出四个选项
pyautogui.prompt('您的姓名:?') # 弹窗带输入框
pyautogui.password('请输入密码 (密码会被隐藏)') # 弹窗带密码框
截图
PyAutoGUI 使用 Pillow 支持图片特性.
import pyautogui
im1 = pyautogui.screenshot() # 截屏
im1.save('robin.png') # 保存截屏到当前工作目录下,并命名为robin.png
定位图片在屏幕的位置:
import pyautogui
button7location = pyautogui.locateOnScreen('test.png') # 返回检测图片的在屏幕的起点和宽高(左, 上, 宽, 高)
# 当然如果你的屏幕得有你识别的图片,你可以先在屏幕中截一个图,测试一下,在运行代码时,必须在屏幕上可以看到你要识别的图片
buttonx, buttony = pyautogui.center(button7location) #返回图片的中心坐标
locateCenterOnScreen()函数返回匹配的图片中心坐标:
import pyautogui
buttonx, buttony = pyautogui.locateCenterOnScreen('button.png') # 返回匹配区域的坐标
PyAutoGUI如何工作
Windows, macOS, and Linux三大操作系统各自有各自的编程操作键鼠方式。这涉及的底层技术细节常常让人困惑,又晦涩难懂。PyAutoGUI的使命就是把这些复杂繁琐统统藏起来,就提供简单的API。
Windows下, PyAutoGUI通过内建ctypes模块操作Windows API (也叫WinAPI或者win32 API)。nicewin模块在 github.com/asweigart/n… 提供了Python调用Windows API的范例。
macOS下, PyAutoGUI使用rubicon-objc模块操作Cocoa API.
Linux下, PyAutoGUI使用Xlib模操作X11或者是X Window System.
END