简介
PyAutoGUI是一个用于人类的跨平台GUI自动化Python模块,可以通过编程方式控制鼠标和键盘。
安装
要安装PyAutoGUI模块,可以使用pip命令:
pip install pyautogui
键盘和鼠标控制
在PyAutoGUI中,使用的x、y坐标系以屏幕左上角为原点(0, 0)。x坐标向右增加(与数学中的坐标系一致),而y坐标向下增加(与数学中的坐标系相反)。对于一个大小为1920 x 1080像素的屏幕,坐标0, 0代表左上角,而1919, 1079代表右下角。
目前,PyAutoGUI只能在主监视器上正常工作。对于第二个监视器的屏幕,PyAutoGUI不太可靠(鼠标功能可能会根据操作系统和版本在多监视器设置上工作或不工作)。
PyAutoGUI发送的所有键盘按键都会发送到当前具有焦点的窗口,就好像你按下了物理键盘上的按键一样。
下面是一些常用的PyAutoGUI函数示例:
import pyautogui
# 获取屏幕的宽度和高度
screenWidth, screenHeight = pyautogui.size()
# 获取鼠标当前位置的x和y坐标
currentMouseX, currentMouseY = pyautogui.position()
# 将鼠标移动到坐标为100, 150的位置
pyautogui.moveTo(100,150)
# 在当前位置单击鼠标
pyautogui.click()
# 在坐标为200, 220的位置单击鼠标
pyautogui.click(200,220)
# 将鼠标向下移动10个像素,相对于当前位置
pyautogui.move(None,10)
# 双击鼠标
pyautogui.doubleClick()
# 在2秒内使用缓动函数将鼠标移动到500, 500的位置
pyautogui.moveTo(500,500, duration=2, tween=pyautogui.easeInOutQuad)
# 输入字符串"Hello world!",每个按键之间间隔0.25秒
pyautogui.write('Hello world!', interval=0.25)
# 模拟按下Esc键
pyautogui.press('esc')
# 按下Shift键
pyautogui.keyDown('shift')
# 连续按下6次左箭头键
pyautogui.write(['left','left','left','left','left','left'])
# 松开Shift键
pyautogui.keyUp('shift')
# 使用快捷键Ctrl+C
pyautogui.hotkey('ctrl','c')
显示消息框
PyAutoGUI还提供了显示消息框的功能,下面是一些示例:
import pyautogui
# 显示一个警告框
pyautogui.alert('This is an alert box.')
# 显示一个确认框,返回用户的选择结果
pyautogui.confirm('Shall I proceed?')
# 显示一个带有选项的确认框,返回用户选择的选项
pyautogui.confirm('Enter option.', buttons=['A','B','C'])
# 显示一个提示框,返回用户输入的文本
pyautogui.prompt('What is your name?')
# 显示一个密码框,返回用户输入的密码(隐藏文本)
pyautogui.password('Enter password (text will be hidden)')
屏幕截图功能
PyAutoGUI使用Pillow库提供了屏幕截图的功能。下面是一些示例:
import pyautogui
# 截取整个屏幕的截图并保存为文件
im1 = pyautogui.screenshot()
im1.save('my_screenshot.png')
# 截取屏幕的截图并保存为my_screenshot2.png
im2 = pyautogui.screenshot('my_screenshot2.png')
除了截图,PyAutoGUI还提供了在屏幕上定位图像的功能:
import pyautogui
# 在屏幕上定位图像,并返回匹配区域的坐标和尺寸
button7location = pyautogui.locateOnScreen('button.png')
button7location
# 输出:(1416, 562, 50, 41)
# 获取匹配区域的中心坐标
buttonx, buttony = pyautogui.center(button7location)
buttonx, buttony
# 输出:(1441, 582)
# 在按钮的中心位置单击鼠标
pyautogui.click(buttonx, buttony)
如果只需要获取匹配区域的中心坐标,可以使用locateCenterOnScreen()
函数:
import pyautogui
# 在屏幕上定位图像,并返回匹配区域的中心坐标
buttonx, buttony = pyautogui.locateCenterOnScreen('button.png')
buttonx, buttony
# 输出:(1441, 582)
# 在按钮的中心位置单击鼠标
pyautogui.click(buttonx, buttony)
结论
PyAutoGUI是一个功能强大的Python模块,可以帮助开发人员自动化GUI操作。无论是控制鼠标和键盘,显示消息框,还是进行屏幕截图和图像定位,PyAutoGUI都提供了简单而有效的方法。它的跨平台支持使得在不同操作系统上都能使用相同的代码进行自动化操作。无论是开发自动化测试脚本,还是进行GUI操作的快速原型开发,PyAutoGUI都是一个值得尝试的工具。
项目地址:https://github.com/asweigart/pyautogui