简介

PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,多平台支持(Windows,OS X,Linux)。

安装

pip3 install pyautogui

设置

保护措施,避免失控
pyautogui.FAILSAFE = True
#为所有的PyAutoGUI函数增加延迟。默认延迟时间是0.1秒。
pyautogui.PAUSE = 0.5

鼠标操作

import pyautogui

获取当前屏幕分辨率(长,高)
screenWidth, screenHeight = pyautogui.size()

获取当前鼠标位置
currentMouseX, currentMouseY = pyautogui.position()

2秒钟鼠标移动坐标为100,100位置 绝对移动
#pyautogui.moveTo(100, 100,2)
pyautogui.moveTo(x=100, y=100,duration=2, tween=pyautogui.linear)

鼠标移到屏幕中央。
pyautogui.moveTo(screenWidth / 2, screenHeight / 2)

鼠标左击一次
#pyautogui.click()
# x
# y
# clicks 点击次数
# interval点击之间的间隔
# button ‘left’, ‘middle’, ‘right’ 对应鼠标 左 中 右或者取值(1, 2, or 3)
# tween 渐变函数
pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button=’left’, duration=0.0, tween=pyautogui.linear)

鼠标相对移动 ,向下移动
#pyautogui.moveRel(None, 10)
pyautogui.moveRel(xOffset=None, yOffset=10,duration=0.0, tween=pyautogui.linear)

鼠标当前位置0间隔双击
#pyautogui.doubleClick()
pyautogui.doubleClick(x=None, y=None, interval=0.0, button=’left’, duration=0.0, tween=pyautogui.linear)

鼠标当前位置3击
#pyautogui.tripleClick()
pyautogui.tripleClick(x=None, y=None, interval=0.0, button=’left’, duration=0.0, tween=pyautogui.linear)

右击
pyautogui.rightClick()

中击
pyautogui.middleClick()

用缓动/渐变函数让鼠标2秒后移动到(500,500)位置
# use tweening/easing function to move mouse over 2 seconds.
pyautogui.moveTo(x=500, y=500, duration=2, tween=pyautogui.easeInOutQuad)

鼠标拖拽
pyautogui.dragTo(x=427, y=535, duration=3,button=’left’)

鼠标相对拖拽
pyautogui.dragRel(xOffset=100,yOffset=100,duration=,button=’left’,mouseDownUp=False)

鼠标移动到x=1796, y=778位置按下
pyautogui.mouseDown(x=1796, y=778, button=’left’)

鼠标移动到x=2745, y=778位置松开(与mouseDown组合使用选中)
pyautogui.mouseUp(x=2745, y=778, button=’left’,duration=5)

鼠标当前位置滚轮滚动
pyautogui.scroll()
# 鼠标水平滚动(Linux)
pyautogui.hscroll()
# 鼠标左右滚动(Linux)
pyautogui.vscroll()

键盘操作

模拟输入信息
pyautogui.typewrite(message=’Hello world!’,interval=0.5)
# 键入 “a”, 然后敲击左方向键, 再键入 “b”
pyautogui.typewrite([‘a’,’left’,’b’])
# 点击ESC
pyautogui.press(‘esc’)
# 按住shift键
pyautogui.keyDown(‘shift’)
# 放开shift键
pyautogui.keyUp(‘shift’)
# 模拟组合热键
pyautogui.hotkey(‘ctrl’, ‘c’)

支持的按键
[’\t’, ‘\n’, ‘\r’, ’ ‘, ‘!’, ‘“’, ‘#’, ‘$’, ‘%’, ‘&’, “’”, ‘(’,
‘)’, ‘*’, ‘+’, ‘,’, ‘-’, ‘.’, ‘/’, ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’,
‘8’, ‘9’, ‘:’, ‘;’, ‘<’, ‘=’, ‘>’, ‘?’, ‘@’, ‘[’, ‘\’, ‘]’, ‘^’, ‘_’, ‘`’,
‘a’, ‘b’, ‘c’, ‘d’, ‘e’,‘f’, ‘g’, ‘h’, ‘i’, ‘j’, ‘k’, ‘l’, ‘m’, ‘n’, ‘o’,
‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’, ‘z’, ‘{’, ‘|’, ‘}’, ‘~’,
‘accept’, ‘add’, ‘alt’, ‘altleft’, ‘altright’, ‘apps’, ‘backspace’,
‘browserback’, ‘browserfavorites’, ‘browserforward’, ‘browserhome’,
‘browserrefresh’, ‘browsersearch’, ‘browserstop’, ‘capslock’, ‘clear’,
‘convert’, ‘ctrl’, ‘ctrlleft’, ‘ctrlright’, ‘decimal’, ‘del’, ‘delete’,
‘divide’, ‘down’, ‘end’, ‘enter’, ‘esc’, ‘escape’, ‘execute’, ‘f1’, ‘f10’,
‘f11’, ‘f12’, ‘f13’, ‘f14’, ‘f15’, ‘f16’, ‘f17’, ‘f18’, ‘f19’, ‘f2’, ‘f20’,
‘f21’, ‘f22’, ‘f23’, ‘f24’, ‘f3’, ‘f4’, ‘f5’, ‘f6’, ‘f7’, ‘f8’, ‘f9’,
‘final’, ‘fn’, ‘hanguel’, ‘hangul’, ‘hanja’, ‘help’, ‘home’, ‘insert’, ‘junja’,
‘kana’, ‘kanji’, ‘launchapp1’, ‘launchapp2’, ‘launchmail’,
‘launchmediaselect’, ‘left’, ‘modechange’, ‘multiply’, ‘nexttrack’,
‘nonconvert’, ‘num0’, ‘num1’, ‘num2’, ‘num3’, ‘num4’, ‘num5’, ‘num6’,
‘num7’, ‘num8’, ‘num9’, ‘numlock’, ‘pagedown’, ‘pageup’, ‘pause’, ‘pgdn’,
‘pgup’, ‘playpause’, ‘prevtrack’, ‘print’, ‘printscreen’, ‘prntscrn’,
‘prtsc’, ‘prtscr’, ‘return’, ‘right’, ‘scrolllock’, ‘select’, ‘separator’,
‘shift’, ‘shiftleft’, ‘shiftright’, ‘sleep’, ‘space’, ‘stop’, ‘subtract’, ‘tab’,
‘up’, ‘volumedown’, ‘volumemute’, ‘volumeup’, ‘win’, ‘winleft’, ‘winright’, ‘yen’,
‘command’, ‘option’, ‘optionleft’, ‘optionright’]

截屏

整个屏幕截图并保存
im1 = pyautogui.screenshot()
im1.save(‘my_screenshot.png’)
im2 = pyautogui.screenshot(‘my_screenshot2.png’)

屏幕查找图片位置并获取中间点

在当前屏幕中查找指定图片(图片需要由系统截图功能截取的图)
coords = pyautogui.locateOnScreen(‘folder.png’)
#获取定位到的图中间点坐标
x,y=pyautogui.center(coords)
#右击该坐标点
pyautogui.rightClick(x,y)

实战练习

1、计算机自动计算

打开电脑自带的计算器
利用截图工具截取4张图,并依次命名
将python程序和计算器一同打开在桌面上
运行python程序

  1. # 自动计算器输入
  2. import pyautogui
  3. x = [0]*4
  4. x[0] = pyautogui.locateCenterOnScreen('7.png')
  5. x[1] = pyautogui.locateCenterOnScreen('+.png')
  6. x[2] = pyautogui.locateCenterOnScreen('5.png')
  7. x[3] = pyautogui.locateCenterOnScreen('=.png')
  8. for i in range(4):
  9. pyautogui.click(x[i])

PyAutoGUI—鼠标键盘操作 - 图1

2、自动画图

# 自动画图
import pyautogui
import time

time.sleep(5)

distance = 200
while distance > 0:
    pyautogui.dragRel(distance, 0, duration=0.5)  # move right
    distance -= 5
    pyautogui.dragRel(0, distance, duration=0.5)  # move down
    pyautogui.dragRel(-distance, 0, duration=0.5)  # move left
    distance -= 5
    pyautogui.dragRel(0, -distance, duration=0.5)  # move up

PyAutoGUI—鼠标键盘操作 - 图2