pyautogui(控制鼠标键盘)GitHub官方文档翻译

4,893 阅读4分钟

asweigart/pyautogui

A cross-platform GUI automation Python module for human beings. Used to programmatically control the mouse & keyboard. 一个跨平台自动化python模块,以编程的方式控制鼠标键盘。

换言之,就是可以用python代码代替鼠标键盘操作。

pyautogui

如果你在访问github网络慢,可以访问我搬到gitee上的仓库

robinmo/pyautogui

翻译如下:

PyAutoGUI

PyAutoGUI 是一个跨平台自动化python模块,以编程的方式控制鼠标键盘。 (如果你还未安装python可以自行搜索对应平台python安装及环境配置教程)

pip install pyautogui

完整的文档地址pyautogui.readthedocs.org

简体中文文档见 muxuezi.github.io/posts/doc-p… (可惜访问的时候,404)

源码见 github.com/asweigart/p…

如果你安装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