【python–教程】pyautogui图形自动化,击败重复性办公任务。

  • Post author:
  • Post category:python


pyautogui一个神奇的图像自动化库,学会之后无所不能。上能挂机刷宝箱,下能自动写文档。(>人<;)让我装个逼,别锤我,谢谢!



安装

这个pyautogui在win10上的安装挺坑的,当初第一次安装时出现了好几次错误(┬┬﹏┬┬)

安装命令如下:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyautogui



导入模块

在安装好这个模块后我们还需要在程序的开头加上如下代码导入该模块

import pyautogui



鼠标操作

讲鼠标操作前,我们提个问题,如何确认电脑上屏幕上某个图标的位置?

在这里插入图片描述
答:是通过图标的左上角的坐标位置进行确认的。

如图所示,我们可以看看出是以屏幕的左上角作为起始点,进行确认屏幕中的位置。细心的小伙伴可能会发现,这坐标的走向类似于数学坐标系中的第四象限。没错,不过Y轴的数值类似于第四象限的Y轴的绝对值。也就是说Y的值越大,在屏幕中的为位置就越向下。说明如果我想让鼠标点击某个位置,必须要先获取该位置的坐标值。

  1. 获取鼠标位置

    所以我们的第一条命令就是获取鼠标当前的位置。
x,y = pyautogui.position()

我们来打印下当前的位置

print ("当前鼠标的X轴的位置为:{},Y轴的位置为:{}".format(x,y))

输出结果如下:

当前鼠标的X轴的位置为:333,Y轴的位置为:327
  1. 获取屏幕分辨率

    如何获取屏幕的分辨率呢?也就是最大的X和Y的值
x,y = pyautogui.size()

打印屏幕的分辨率

print ("当前屏幕的分辨率是{}*{}".format(x,y))

输出结果:

当前屏幕的分辨率是1536*864
  1. 移动鼠标

    比如说,电脑桌面上的火狐浏览器的位置是(100,100).我如何将鼠标移动到这个位置呢?
pyautogui.moveTo(x=300,y=300,duration=0.25)


duration

类似于移动时间或移动速度,省略后则是瞬间移动到指定的位置

  1. 单击鼠标

    如何让鼠标左键点击屏幕中(100,100)的位置呢?
pyautogui.click(x=100,y=150,button='left')



button=‘left’

相当于鼠标左键,

button=‘right’

相当于鼠标右键。当不带button参数时,默认为左键。

  1. 双击鼠标

    如何双击鼠标呢?
pyautogui.doubleClick(x=100,y=150,button="left")



button=‘left’

相当于鼠标左键,

button=‘right’

相当于鼠标右键。当不带button参数时,默认为左键。

  1. 拖拽鼠标

    如何实现拖拽鼠标?
pyautogui.dragTo(x,y,duration=0.25)


duration

类似于移动时间或移动速度,省略后则是瞬间移动到指定的位置



键盘操作

在讲键盘操作之间,先展示一张从脚本之家盗来的按键映射表

在这里插入图片描述

  1. 发送组合键
pyautogui.hotkey('win', 'r')

发送的按键之间使用【,】逗号隔开。

  1. 输入内容
pyautogui.typewrite(message="hello world",interval=0.25)

message后面跟要输入的内容,interval用于设置输入的速度



高级操作

pyautogui有内置的截图功能,可以使用

screenshot

方法进行截图,然后可以操作截图,进行确认图片位置或者指定坐标的颜色等。

  1. 获取坐标点的像素
img = pyautogui.screenshot()
color = img.getpixel((100,100))

执行结果:

该坐标的像素点的颜色是:(255, 255, 255)

返回的是三原色值。

  1. 获取图片的位置
x,y,width,height =  pyautogui.locateOnScreen('a.png')

括号中传递的是图标文件的路径

执行:

print ("该图标在屏幕中的位置是:X={},Y={},宽{}像素,高{}像素".format(x,y,width,height))

结果:

该图标在屏幕中的位置是:X=9,Y=741,宽81像素,高95像素
  1. 获取图标的中心点
x, y = pyautogui.center((9,741,81,95))

括号中分别传递,图片的X轴,Y轴,宽,长

执行命令:

x,y = pyautogui.center((9,741,81,95))

执行结果:

该图标的中心点是:X=49,Y=788



教学代码

# -*- coding:utf-8 -*-
#作者:猫先生的早茶
#时间:2019年5月26日

import pyautogui


"""获取鼠标当前的坐标位置"""
'''
x,y = pyautogui.position()

print ("当前鼠标的X轴的位置为:{},Y轴的位置为:{}".format(x,y))
'''


"""获取屏幕分辨率"""
'''
x,y = pyautogui.size()
print ("当前屏幕的分辨率是{}*{}".format(x,y))
'''



"""移动鼠标到指定位置"""
'''
pyautogui.moveTo(x=300,y=300,duration=0.25)
'''


"""点击鼠标"""
'''
pyautogui.click(x=100,y=150,button='right')
'''


"""双击鼠标"""
'''
pyautogui.doubleClick(x=100,y=150,button="left")

'''

"""发送组合键"""
'''
pyautogui.hotkey('win', 'r')
'''


"""输入内容"""
'''
pyautogui.typewrite(message="hello world",interval=0.25)
'''

"""获取指定坐标的颜色"""
'''
img = pyautogui.screenshot()
color = img.getpixel((100,100))
print ("该坐标的像素点的颜色是:{}".format(color))
'''


"""获取图标的位置"""
'''
x,y,width,height =  pyautogui.locateOnScreen('a.png')
print ("该图标在屏幕中的位置是:X={},Y={},宽{}像素,高{}像素".format(x,y,width,height))
'''

"""获取中心点"""
'''
x,y = pyautogui.center((9,741,81,95))
print ("该图标的中心点是:X={},Y={}".format(x,y))
'''



版权声明:本文为qq_43017750原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。