python pyautogui库详细使用教程

import pyautogui
# 使用之前先导入库
import time
# 导入时间库,用来制作延迟\等待时间,后面有讲
import pyperclip
# 复制粘贴的库,方便输入中文,后面有讲


screenWidth, screenHeight = pyautogui.size()
# 获取主显示器的大小,用命令行运行后会把结果输出到命令行,当然可以简写:pyautogui.size()
currentMouseX, currentMouseY = pyautogui.position() 
# 获取鼠标的坐标位置(x,y),同样以返回值形式显示
# 简写:pyautogui.position()


pyautogui.moveTo(100, 150)
# 把鼠标移动到100,150坐标(x=100,y=150)
pyautogui.moveTo(500, 500, duration=2)
# 把鼠标移到500,500坐标,移动到那里需要2秒(看上去像是缓慢移动)
pyautogui.moveTo(500, 500, 2)
# 上面那行代码的简写版
pyautogui.moveTo(None, 500)
# x坐标保持不动,y坐标为500,同理y也可以这样写
pyautogui.dragTo(100, 200, button='left')
# 按住左键拖动到100,200
# 左键为left,右键为right,中键为middle
pyautogui.drag(100, 200, button='left')
# 以当前坐标拖动,拖动到距离坐标为100,200的坐标


pyautogui.click()
pyautogui.doubleClick() # 双击鼠标
pyautogui.tripleClick() # 点3下鼠标
pyautogui.middleClick() # 在中间点击鼠标,一般配合找图来用(后面有写)
# 点击鼠标
pyautogui.click(100, 150)
# 在坐标为100,150的位置点击1下,也可以这么写:pyautogui.click(x=100, y=200)
pyautogui.click(100, 150, 3)
# 在坐标为100,150的位置点击3下
pyautogui.click(clicks=2, interval=0.25)
# 点击两次,每次间隔0.25秒
pyautogui.move(400, 0)
# 鼠标移动到当前位置往右400个像素的地方
pyautogui.mouseDown()
# 按下鼠标右键(不松开)
pyautogui.mouseUp()
# 抬起鼠标右键(松开了)
# mouseUp()括号里也可以添加参数的,如button='right'改成松开左键


pyautogui.click('button.png')
# 在屏幕上找到与button.png相似的像素,并点击它
# 自动找图很方便,比如如果你要点击一个总是乱动的按钮
# 可以把按钮截图下来,然后让pyautogui来点击
# 这个找图的功能识别不是很快,为750毫秒左右才能找到
pyautogui.middleClick('button.png')
# 点击这个图片的中间位置
# 同理也可以搭配双击\3击来找图
# 截图推荐使用snipaste,还可以看坐标
# snipaste:www.snipaste.com


# ======================================


pyautogui.write('Hello world!', interval=0.25)
# 输入Hello world!,但是每打一个字母隔0.25秒打另一个字母
pyautogui.press('esc')
# 按一下esc键,其他键包括space,enter,shift等
with pyautogui.hold('shift'):
        pyautogui.press(['left', 'left', 'left', 'left'])
        # 按住shift键不放
        # 按左方向键4次
# 然后就会自动松开shift键
pyautogui.hotkey('ctrl', 'c')
# 按ctrl+c热键组合,还可以是任何组合,如ctrl+v,del+down等
pyautogui.hotkey('ctrl', 'shift', 'esc')
# 组合热键可以是3个或者更多,比如108个


pyautogui.keyDown('shift')
# 按住shift键
pyautogui.keyUp('shift')
# 松开shift键
pyautogui.press(['left', 'left', 'left'])
# 按下3次键盘左键,可以简写为pyautogui.press('left', 3)
# 或者写为pyautogui.press('left', presses=3)


# 这些是有效的键:
['\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']


# ======================================


time.sleep(3)
# 等待3秒后再进行下一步操作
# 可以搭配来写:
pyautogui.moveTo(725, 360)
time.sleep(3)
pyautogui.middleClick()
# 把鼠标移到725,360后等3秒,再点击中间一下


def wait():
    time.sleep(3)
    return
# 定义一个函数,作用是等待3秒

# 我们可以把之前的搭配改成这样:
pyautogui.moveTo(725, 360)
wait()
pyautogui.middleClick()
# 效果一样


# ======================================


pyperclip.copy('https://www.baidu.com/')
# 复制https://www.baidu.com/到剪贴板
pyperclip.paste()
# 使用ctrl+v粘贴
# 也可以使用pyautogui.hotkey('ctrl','v')来粘贴
# 这个copy的好处就是可以输入中文等各种语言文字
# 默认pyautogui的键盘输入只能按shift,然后一个一个字母打来输入中文

已经大致了解了,下面是演示阶段:

# 一些连起来的操作
# 这里的cptl()是函数调用,后面有讲

pyautogui.hotkey('ctrl','4')
pyautogui.tripleClick(60, 1010)
cptl()
pyautogui.click(37, 243)
pyautogui.press("f2")
pyautogui.hotkey('ctrl','v')
pyautogui.press("backspace")
pyautogui.press("3")
pyautogui.press("enter")
# 视频3

pyautogui.click(37, 343)
pyautogui.press("f2")
pyautogui.press("1")
pyautogui.press("enter")
# 图片1

pyautogui.click(37, 443)
pyautogui.press("f2")
pyautogui.press("2")
pyautogui.press("enter")
# 图片2

pyautogui.click(37, 543)
pyautogui.press("f2")
pyautogui.press("3")
pyautogui.press("enter")
# 图片3

函数的使用:

# 一个用于调用的函数
# 在其他类里面可以这样引用:
# from time import wait5, wait2, wait
# 这个类的名称为time.py,跟import time没关系,要分清

import time

def wait():
    time.sleep(3)
    return

def wait2():
    time.sleep(2)
    return

def wait5():
    time.sleep(5)
    return
# 另一个函数,调用时使用cptl()即可,然后就会执行一遍函数内的代码

def cptl():
    pyautogui.hotkey('ctrl','c')
    wait2()
    pyautogui.hotkey('ctrl','c')
    wait2()
    pyautogui.hotkey('win','d')
    return

最后补充一下办公可能需要的:

# 删除桌面后缀为1.mp4和2.mp4结尾的文件
# 这个只检查桌面有没有,不会遍历到子文件夹

import os
import glob

path =r'C:\Users\Administrator\Desktop'
for infile in glob.glob(os.path.join(path, '*1.mp4')):
     os.remove(infile)
for infile in glob.glob(os.path.join(path, '*2.mp4')):
     os.remove(infile)
python
703 views
Comments
登录后评论
Sign In
·

很棒,感谢

·

浅浅补充一些用法:

# 1.获取当前鼠标位置
pyautogui.position()

# 实例:实时获取鼠标位置
import pyautogui as gui
while True:
    lp = gui.position()
    if lp != gui.position():
        print(gui.position())
# 2.自动截屏定位
# pyautogui.locateOnScreen()
# 它能捕获屏幕,并定位你给它的图片(首先你要截取目标位置的图)

import pyautogui as gui

a1 = gui.locateOnScreen('... .png', confidence=0.9)
# print(a1)  # Box(left=1575, top=1042, width=22, height=28)
a2 = gui.center(bl1)  # 定位这个区域的中心
# print(a2)  # Point(x=1586, y=1056)
ax, ay = a2
gui.click(ax, ay)

'''
使用这个功能需要另外两个库
①Pillow:这个库用来截图
②opencv-python:这个库用来增加容错率[代码中的confidence(自信)参数]
这里要强调一下opencv-python这个库:
1.confindence的值∈(1,-∞),数值越大,容错率越小,准确率越高
如果≥1,则会报错
2.尽量把confindence这个参数加上,如果不加,第二天就会发现识别失败
(原文:函数由于像素差异可以忽略不计而无法定位图像)
3.这个库比较大,后期不建议打包成exe文件(本来10MB的东西直接增加50MB>︿<)
当然有需要的打包也可以
5.另外,这个函数运行时间较长(1-2s),如果加了confidence参数可以缩小到0.5s以内
'''

#其实上述代码可以进一步简化[ locateCenterOnScreen() ],它直接反馈中心坐标
x1, y1 = gui.locateCenterOnScreen('... .png', confidence=0.9)
gui.click(x1, y1)
# 3.发出弹窗
gui.alert(text='找不到图标', title='警告', button='OK')

# 4.鼠标滚轮
gui.scorll(300)
# 默认向上滚动,向下滚动要加负号
# 输入数值的绝对值越大,滚轮滚得越长

官方文档:https://pyautogui.readthedocs.io