用GUI自动化控制键盘和鼠标
本文简单介绍如何通过python的pyautogui库写程序直接控制键盘和鼠标.
安装pyautogui模块
在命令行窗口运行pip install pyautogui,安装pyautogui.
防止或恢复GUI自动化问题
python能够以想象不到的速度移动鼠标并击键.实际上,他可能太快了,导致其他程序跟不上.而且,如果出了问题,但你的程序继续到处移动鼠标,可能很难搞清楚程序到底在做什么,或者如何从问题中恢复.好在,有几种方法来防止或恢复GUI自动化问题
1.通过注销关闭所有程序
注销的热键是ctrl-alt-del.通过注销,会失去未保存的工作,但至少不需要等计算机完全重启
2.暂停和自动防故障装置
将pyautogui.PAUSE变量设置为要暂停的秒数.例如:在设置pyautogui.PAUSE=2之后,每个PyAutoGUI函数调用在执行动作之后,都会等待一秒半.
pyautogui也有自动防故障功能.将鼠标移到屏幕的左上角,这将导致pyautogui产生pyautogui.FailSafeException异常.你的程序可以用try和except语句来处理这个异常,也可以让异常导致程序崩溃.这两种情况下,如果你尽可能快地向左上移动鼠标,自动防故障功能都将停止程序.可以设置pyautogui.FAILSAFE=False,禁止这项功能.
PyAutoGUI函数
函数名 | 功能介绍 |
moveTo(x,y) | 将鼠标移动到指定的x,y坐标 |
moveRel(xOffset,yOffset) | 相对于当前位置移动鼠标 |
dragTo(x,y) | 按下左键移动鼠标 |
dragRel(xOffset,yOffset) | 按下左键,相对于当前位置移动鼠标 |
click(x,y,button) | 模拟点击(默认是左键) |
rightClick() | 模拟右键点击 |
middleClick() | 模拟中键点击 |
doubleClick() | 模拟左键双击 |
mouseDown(x,y,button) | 模拟在x,y处按下指定鼠标按键 |
mouseUp(x,y,button) | 模拟在x,y处释放指定键 |
scroll(units) | 模拟滚轮滚动.正参数表示向上滚动,负参数表示向下滚动 |
typewrite(message) | 键入给定消息字符串中的字符 |
typewrite([Key1,Key2,…]) | 键入给定键字符串 |
press(key) | 按下并释放给定键,接受单个按键命令 |
keyDown(key) | 模拟按下给定键 |
KeyUp(key) | 模拟按下释放给定键 |
hotKey([Key1,Key2,…]) | 模拟按顺序按下给定键字符串,然后以相反的顺序释放 |
screenshot() | 返回屏幕快照的Image对象 |
getpixel((x,y)) | 图像中这些坐标处的像素颜色 |
pixelMatchesColor(x,y,(r,g,b)) | 屏幕指定的x.y坐标处的像素与指定的颜色匹配 |
position() | 确定鼠标当前的位置.它将返回函数调用时,鼠标x,y坐标的元组 |
键名