PyAutoGUI
是一个跨平台GUI自动化Python模块,用于用编程方式控制鼠标和键盘,不仅支持 Windows, 还支持Linux、MAC。
安装方式:
pip install pyautogui
pyautogui 支持以屏幕左上角为原点,往右为X轴正方向,向下为Y轴正方向的坐标系
x,y = pyautogui.position()
pyautogui.moveTo(100, 200)
pyautogui.moveTo(None, 500)
pyautogui.moveTo(600, None)
pyautogui.moveTo(100, 200, 2)
pyautogui.move(0, 50)
pyautogui.move(0, 50, 2)
moveTo 函数会将鼠标移动到指定坐标,
move 函数是移动相对应坐标的像素点,向右或向下移动,为负数时则是相反方向。同样支持延迟时间这个参数
pyautogui.dragTo(100, 200, button='left')
pyautogui.dragTo(300, 400, 2, button='left')
pyautogui.drag(30, 0, 2, button='right')
dragTo 函数支持鼠标拖动到指定坐标
x,y:XY坐标
duration: 支持延迟参数。
button: 支持选择鼠标的左键、中键或右键
pyautogui.click()
pyautogui.click(x=100, y=200)
pyautogui.click(button='right')
pyautogui.click(clicks=2)
pyautogui.click(clicks=2, interval=0.25)
pyautogui.click(button='right', clicks=3, interval=0.25)
pyautogui.doubleClick()
pyautogui.tripleClick()
pyautogui.rightClick()
click函数默认当前鼠标位置左键点击,
鼠标点击和拖动是由鼠标按下和鼠标抬起两部分组成。如果想单独控制这两部分,可以用下面的函数
pyautogui.mouseDown(button='right')
pyautogui.mouseUp(button='right', x=100, y=200)
pyautogui 支持鼠标中键进行滚动,scroll 是垂直滚动。在MAC和Linux 还支持水平滚动 hscroll
pyautogui.scroll(10, x=100, y=100)
pyautogui.hscroll(10)
可以通过write输入单字符按键,不能输入Shift/Alt这种按键
pyautogui.write('Hello world!', interval=0.25)
press 表示按下键盘上的按键,press其实可以由 keyDown按下和keyUp抬起组成,当使用组合键时,可以搭配使用
pyautogui.press('enter')
pyautogui.keyDown('shift')
pyautogui.press(['left', 'left', 'left'])
pyautogui.keyUp('shift')
pyautogui.press('left', presses=3)
pyautogui.keyDown('shift')
pyautogui.press(['left', 'left', 'left'])
pyautogui.keyUp('shift')
# 简化为
with pyautogui.hold('shift'):
pyautogui.press('left', presses=3)
pyautogui.keyDown('ctrl')
pyautogui.keyDown('shift')
pyautogui.keyDown('esc')
pyautogui.keyUp('esc')
pyautogui.keyUp('shift')
pyautogui.keyUp('ctrl')
# 简化为
pyautogui.hotkey('ctrl', 'shift', 'esc')
上面 shift, esc 都可以用于表示键盘的按键,能够用于表示按键的字符可以见文档:https://pyautogui.readthedocs.io/en/latest/keyboard.html#keyboard-keys
PyAutoGUI 利用 PyMsgBox 中的消息框函数提供跨平台、纯Python方式来显示JavaScript风格的消息框。提供了四个消息框.
显示一个带有文本和一个确定按钮的简单消息框。返回单击的按钮的文本。
pyautogui.alert(text='这是弹窗', title='alert弹窗', button='OK')
显示带有按钮的消息框。返回单击的按钮的文本。
pyautogui.confirm(text='Yes or No?', title='confirm弹窗', buttons=['Yes', 'No'])
显示带有文本输入的消息框和“确定和取消”按钮。返回输入的文本,如果单击“取消”,则返回None。
pyautogui.prompt(text='输入姓名个数', title='弹窗', default='1')
显示带有文本输入的消息框和“确定和取消”按钮。键入的字符显示为*。返回输入的文本,如果单击“取消”,则返回None。
pyautogui.password(text='输入密码', title='弹窗', default='', mask='*')
判断坐标是否位于屏幕上
pyautogui.onScreen(1000, 100)
返回屏幕分辩率大小
pyautogui.size()
可通过screenshot 函数进行截屏,还可以截取固定区域的屏幕,四个参数分别是left, top, width, and height (区域左上角坐标和宽高)
im2 = pyautogui.screenshot('my_screenshot.png')
im = pyautogui.screenshot('my_screenshot.png', region=(0,0, 300, 400))
如果你有一个图像文件,你就可以在屏幕上直观地找到它,可以通过locateOnScreen 用于判断 图片在屏幕中的位置。
如果没找到,从 0.9.41版本开始会抛出 ImageNotFoundException 异常,之前是返回None。
找到会返回第一个找到的图像:一个4位整数元祖(left, top, width, height)表示的区域
此外,还有一些常用的函数
center 可获取区域的中心点
locateCenterOnScreen 会将locateOnScreen、center两者操作合一
locateAllOnScreen:会返回所有满足的图像
locate:在图片haystackImage中查找needleImage,而不是从屏幕里
locateAll:返回所有满足的图像
location=pyautogui.locateOnScreen('calc7key.png')
pyautogui.locateOnScreen('calc7key.png', confidence=0.9, region=(0,0, 300, 400))
pyautogui.center(location)
pyautogui.locateCenterOnScreen('calc7key.png')
locateAllOnScreen(image, grayscale=False)
locate(needleImage, haystackImage, grayscale=False)
locateAll(needleImage, haystackImage, grayscale=False)
# 获取位置像素
im = pyautogui.screenshot()
pix = im.getpixel((100, 200))
pix = pyautogui.pixel(100, 200)
# 位置匹配像素,返回True/False
pyautogui.pixelMatchesColor(100, 200, (130, 135, 144))
# 所有pyautogui的指令都要暂停一秒,这样做,可以防止键盘鼠标操作太快
pyautogui.PAUSE = 1
# 默认为True, 这项功能意味着:当鼠标的指针在屏幕的最左上方,程序会抛异常 pyautogui.FailSafeException,目的是为了防止程序无法停止
pyautogui.FAILSAFE = True
复制粘贴
pyautogui.hotkey('ctrl', 'c')
pyautogui.hotkey('ctrl', 'v')
屏幕定位图片
try:
imagePosition = pyautogui.locateOnScreen('image0.png', confidence=0.9)
if imagePosition:
pass
else:
pass
except ImageNotFoundException:
pass