一个有意思的库pyautogui,再也不用CTRL+C,CTRL+V了。

2022/08 16 12:08
阅读(3572)

PyAutoGUI是一个Python的GUI自动化工具,通过它可以让程序控制鼠标和键盘的一系列操作来达到自动化目的。有了 PyAutoGUI ,就可以用Python随心所欲的操作电脑了。特别是在我们需要通过重复操作在电脑来完成某些工作时,利用 PyAutoGUI 可以提高我们的工作效率,解释我们的双手,先来段视频看效果。

上面视频中,利用 PyAutoGUI +pandas,实现CRM系统中客户归属关系的转移。利用pandas从EXCEL表中读取数据,然后利用 PyAutoGUI 将数据输入系统。当我们有大量数据需要从本地文件中,录入到系统时,利用 PyAutoGUI 来自动化是不错的选择。下面是 PyAutoGUI 的一些常用操作:

一、前置参数类

1.1设置中断自动操作

 
'''默认这项功能为True, 这项功能意味着:当鼠标的指针在屏幕的最坐上方,程序会报错;目的是为了防止程序无法停止'''
pyautogui.FAILSAFE =False  

1.2停顿功能就是让操作暂停一段时间。

 
'''意味着所有pyautogui的指令都要暂停一秒;其他指令不会停顿;这样做,可以防止键盘鼠标操作太快;'''
pyautogui.PAUSE = 1 

二、鼠标操作相关类

2.1 获取屏幕分辨率

 
print(pyautogui.size())   # 返回所用显示器的分辨率; 输出:Size(width=1920, height=1080)
width,height = pyautogui.size()
print(width,height)  # 1920 1080

2.2移动到指定位置

 
'''将鼠标移动到指定的坐标;duration 的作用是设置移动时间,所有的gui函数都有这个参数,而且都是可选参数;
向右移动100px,向下移动500px, 这个过程持续 1 秒钟(duration=1)参数决定;'''
pyautogui.moveTo(100,300,duration=1) 

2.3获得当前鼠标位置

 
print(pyautogui.position())   # 得到当前鼠标位置;输出:Point(x=200, y=800)

2.4鼠标单击事件

 
'''点击鼠标'''
pyautogui.click(10,10)   # 鼠标点击指定位置,默认左键
pyautogui.click(10,10,button='left')  # 单击左键
pyautogui.click(1000,300,button='right')  # 单击右键
pyautogui.click(1000,300,button='middle')  # 单击中间

2.5鼠标双击事件

 
pyautogui.doubleClick(10,10)  # 指定位置,双击左键
pyautogui.rightClick(10,10)   # 指定位置,双击右键
pyautogui.middleClick(10,10)  # 指定位置,双击中键

2.6鼠标点击与释放

 
pyautogui.mouseDown()   # 鼠标按下
pyautogui.mouseUp()    # 鼠标释放

2.7鼠标控制拖动事件

 
''' 拖动到指定位置
   将鼠标拖动到指定的坐标;duration 的作用是设置移动时间,所有的gui函数都有这个参数,而且都是可选参数'''
pyautogui.dragTo(100,300,duration=1)   

''' 按方向拖动
   向右拖动100px,向下拖动500px, 这个过程持续 1 秒钟'''
pyautogui.dragRel(100,500,duration=4)   # 第一个参数是左右移动像素值,第二个是上下

三、 键盘事件

3.1键盘输入函数

pyautogui.keyDown() : 模拟按键按下;
pyautogui.keyUp() : 模拟按键释放;
pyautogui.press() : 就是调用keyDown() & keyUp(),模拟一次按键;

举个例子:

 
pyautogui.keyDown('shift')    # 按下shift
pyautogui.press('4')    # 按下 4
pyautogui.keyUp('shift')   # 释放 shift

3.2 特殊按键

键盘字符串说明
enter(或return 或 \n)回车
escESC键
shiftleft, shiftright左右SHIFT键
altleft, altright左右ALT键
ctrlleft, ctrlright左右CTRL键
tab (\t)TAB键
backspace, deleteBACKSPACE 、DELETE键
pageup, pagedownPAGE UP 和 PAGE DOWN键
home, endHOME 和 END键
up, down, left,right箭头键
f1, f2, f3…. f12F1…….F12键
volumemute, volumedown,volumeup声音变大变小静音(有些键盘没有)
pausePAUSE键,暂停键
capslockCAPS LOCK 键
numlockNUM LOCK 键
scrolllockSCROLLLOCK 键
insertINSERT键
printscreenPRINT SCREEN键
winleft, winrightWin键(windows )
commandcommand键(Mac OS X )
optionoption(Mac OS X)

3.3 快捷键

 
'''如果我们需要模拟复制的快捷键 ctrl + c ,如果用前面的方法,则代码为:'''
pyautogui.keyDown('ctrl')
pyautogui.keyDown('c')
pyautogui.keyUp('c')
pyautogui.keyUp('ctrl')

'''快捷方法'''
pyautogui.hotkey('ctrl','c')

四、 屏幕处理

4.1 屏幕截图

pyautogui 提供了一个方法screenshot(),可以返回一个Pillow的image对象

 
im = pyautogui.screenshot() # 返回屏幕的截图,是一个Pillow的image对象
im.getpixel((500, 500)) # 返回im对象上,(500,500)这一点像素的颜色,是一个RGB元组
pyautogui.pixelMatchesColor(500,500,(12,120,400)) # 是一个对比函数,对比的是屏幕上(500,500)这一点像素的颜色,与所给的元素

截图操作

 
im = pyautogui.screenshot()
im.save('屏幕截图.png')

指定区域截图

 
pyautogui.screenshot(region=(0,0,0,0))

匹配图片的函数

 
'''可以通过保存屏幕截图,然后通过这个函数来定位'''
pyautogui.locateOnScreen('picture.jpg')

匹配多处图片

 
pyautogui.locateAllOnScreen('picture.jpg')

这里有一个特别的地方,就是从本地文件读取数据时,复制内容需要用到pyperclip这个库,用pyperclip.copy()方法,然后再用pyautogui.hotkey(‘Ctrl’,’v’).

o郭二爷o原创或整理--转载请注明: http://www.dszhp.com/pyautogui.html

发表回复

欢迎回来 (打开)

(必填)