|
目录安装暂停和自动防故障装置、注销坐标的概念获取屏幕分辨率获取鼠标指针位置鼠标指针交互移动鼠标指针单击/双击鼠标左键单击左键双击右键单击中键单击拖动鼠标滚动鼠标MouseInfo建议获取窗口信息该对象的所有属性:操纵窗口返回布尔值的参数更改窗口的状态的方法两个常用的函数获取窗口的其他方法没用的函数写代码时和运行时请注意我的模块使用经历PyAutoGUI模块是Python专属的图形用户界面自动化的技术(简称GUI自动化)的模块,全自动控制您的键盘、鼠标,让重复工作更轻松!各种GUI属性、信息轻松获取。文档结尾有我的使用经历。本文虽由小盆友制作,但制作精良。先跟大家说一下,我最近在忙C++和CSP比赛的事情,导致更新慢,非常抱歉。注意:实用性考虑,本文主要面向Windows系统,macOS、Linus系统的我还不太了解,粉丝破百后我考虑更新一下。安装安装方式很简单,直接使用pip安装即可:pipinstallpyautogui使用清华源安装PyAutoGUI模块(加速安装):pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplepyautogui本文绝大部分代码都将模块导入部分删去了,请在你的代码中加入如下代码导入PyAutoGUI模块:importpyautogui暂停和自动防故障装置、注销如果你的程序出现错误,例如写错了一个坐标、流氓软件弹出了个窗口,且无法使用键盘或鼠标关闭程序。请在(默认为)0.1秒(根据你的pyautogui.PAUSE参数设置的数字)内快速将鼠标移动到屏幕的四个角落之一。如果你将pyautogui.FAILSAFE设置为False,以上防故障装置会关闭,该方法失效,现在唯一的方法是——注销。Windows操作系统按Ctrl+Alt+Delete屏幕就会变黑,此时程序无法控制鼠标键盘,单击中间的注销按钮即可注销。(注销操作会关闭计算机中的所有程序,建议在注销前保存工作并关闭所有应用程序)坐标的概念屏幕的最左边的最上边(左上角)的坐标是(0,0),向右x坐标递增,向左x坐标递减,向下y坐标递增,向上y坐标递减。屏幕坐标没有负数,都是正整数。获取屏幕分辨率建议在代码开头检测屏幕分辨率,若分辨率与你想要的分辨率不一样,就弹出警告窗口等防止代码运行时出现问题。wh=pyautogui.size()#返回一个Size对象,比如:Size(width=1920,height=1080)print(wh[0])#输出x坐标print(wh[1])#输出y坐标print(wh.width)#输出x坐标print(wh.height)#输出y坐标获取鼠标指针位置p=pyautogui.position()#返回Point对象,比如:Point(x=500,y=500)print(p[0])#输出x坐标print(p[1])#输出y坐标print(p.x)#输出x坐标print(p.y)#输出y坐标鼠标指针交互移动鼠标指针相对于当前位置移动鼠标指针(x、y为整数,正数负数都可以)。其中duration参数是可选的,它表示鼠标移动到这个位置所需要的时间,默认为0,可以为正浮点数或正整数,单位为秒(s)。pyautogui.move(x,y,duration=time)用屏幕坐标移动鼠标指针,在move函数后面加上To就是moveTo函数。duration参数与move函数一样pyautogui.moveTo(x,y,duration=time)单击/双击鼠标这个功能有很多效果一样的代码,大家可以根据自己的喜好选择。左键单击pyautogui.click(x,y)pyautogui.click(x,y,button='left')左键双击pyautogui.doubleClick(x,y)右键单击pyautogui.click(x,y,button='right')pyautogui.rightClick(x,y)中键单击pyautogui.click(x,y,button='middle')pyautogui.middleClick(x,y)拖动鼠标其参数和click函数差不多,这里不在多叙述。pyautogui.drag(x,y,duration=time)#相对于当前位置拖动鼠标指针pyautogui.dragTo(x,y,duration=time)#用屏幕坐标拖动鼠标指针滚动鼠标向scroll函数传入的参数如果是正整数,表示向上滚动。反之向下滚动。pyautogui.scroll(number)MouseInfoMouseInfo是一个应用程序,它是PyAutoGUI的一部分。它方便了你开发与鼠标相关的程序,很实用。缺点是全英文,小白可能看不懂。翻译(没图片,大家凑合着看,注意,这个翻译是自己翻译的,稍有改动以便理解):复制日志帮助————————————————————————————3秒,按钮延迟复制所有(F1)将所有保存在日志文件内(F5)XY坐标2678,1172复制XY坐标(F2)将XY坐标保存在日志文件内(F6)RGB颜色90,0,0复制RGB颜色(F3)将RGB颜色保存在日志文件内(F7)十六进制(H)RGB颜色#5A0000复制十六进制RGB颜色(F4)将十六进制RGB颜色保存在日志文件内(F8)颜色XY原点0,0日志文件地址保存日志文件屏幕截图文件地址截取整个屏幕并保存屏幕截图文件屏幕文件保存于打开代码如下:(建议使用交互式环境)pyautogui.mouseInfo()他的窗口看起来像这样:建议在开发过程中,建议不要通过屏幕坐标操作,最好使用图像识别,代码如下:try: image=pyautogui.locateOnScreen("你的图片路径.png")except: print("错误:未找到该图像")但这样做有很大的缺陷,一旦修改屏幕分辨率就90%会失败,或者稍微动一个像素就会导致失败。获取窗口信息什么是活动窗口?当前处于前台且接受键盘输入的窗口。比如说你现在在用的浏览器的窗口。以下代码可获取活动窗口并输出窗口:fw=pyautogui.getActiveWindow()#fw是一个Win32Window对象print(fw.title)#打印窗口该对象的所有属性:第一列为Win32Window对象的属性,用空格隔开。第二列为该属性的描述。leftrighttopbottom窗口边的x或y坐标toplefttoprightbottomleftbottomright两个整数的命名元组,表示窗口角的xy坐标midleftmidrightmidleftmidright两个整数命名的元组,表示窗口边中间的xy坐标widthheight表示窗口的一个维度,单位为像素size两个整数的命名元组,表示窗口的宽度和高度area一个整数,表示窗口的面积,以像素为单位center两个整数的命名元组,表示窗口的中心xy坐标centerxcentery一个整数,表示窗口中心的x或y坐标box4个整数的命名元组,表示窗口的左侧、顶部、宽度、高度title窗口顶部栏中的文本字符串操纵窗口我们可以通过修改这些属性来操纵窗口,如:fw.width=1000也可以发现或更改窗口的最大化,最小化和激活状态。返回布尔值的参数fw.isMaximized#是否最大化fw.isMinimized#是否最小化fw.isActive#是否激活更改窗口的状态的方法fw.maximize()#最大化fw.minimize()#最小化fw.activate()#激活两个常用的函数fw.restore()#将窗口还原到以前的大小和位置fw.close()#关闭一个窗口,注意使用这种方法,因为他可能会绕过要求你在退出应用程序之前保存所做工作的所有消息对话框。获取窗口的其他方法pyautogui.getAllWindows()#返回屏幕上所有可见窗口的window对象列表pyautogui.getWindowsAt(x,y)#返回所有包含点xy的可见窗口的Window对象列表pyautogui.getWindowsWithTitle(title)#返回所有栏中包含字符串title的可见窗口的window对象的列表pyautogui.getActiveWindow()#返回当前接收键盘焦点的窗口的window对象这个模块还有pyautogui.getAlltitles()函数,该函数返回所有可见窗口的字符串列表没用的函数因为第一个代码time模块早就有了,相信大家也习惯用time模块的sleep函数。第二个代吗因为是在终端输出,很不美观,还不如自己写的for循环+tkinter模块的进度条好使:pyautogui.sleep(3)#等待3秒,与time.sleep()没什么两样pyautogui.countdown(10)#会每秒打印一个数字,相当于倒计时写代码时和运行时请注意1、建议每次运行代码用相同的屏幕分辨率,这样窗口的位置就不会变,你之前的截屏也能正确识别2、程序打开一个应用程序时建议先将其最大化,这样它的按钮等东西都在同一个地方3、在等待加载程序的过程中,一定要加入足够的暂停时间4、建议使用logging(存储日志)模块保存和保存程序所做的事情,这个模块个人觉得很实用,功能不是很多但很强大。5个不同级别的日志重要程度,可以保存至文件里。有需要的话我单独出一个博文讲。5、使用pyautogui.getWindowsWithTitle(title)来确保你认为程序正在单击的应用程序的窗口是存在的,并使用fw.activate()方法将该窗口放在前台6、一定要在程序中添加尽可能多的检查,万一弹出一个意外的窗口或计算机失去了网络连接,它可能会在你的电脑上到处乱点7、如果你不按以上就运行,我建议你一定要做在椅子上,万一出事了就不好搞了。显示消息框(如果你有这方面的需求,tkinter模块是个更好的选择)pyautogui.alert(text)#显示文本text,并有一个确定按钮pyautogui.confirm(text)#显示文本text,并有确定和取消按钮,根据单击的按钮返回'ok'或'Cancel'pyautogui.prompt(text)#显示文本text,并有一个文本字段给用户输入,它以字符串的形式返回pyautogui.password(text)#与prompt()相同,但会显示“*”,这样用户可以输入敏感信息,如密码等隐私信息他们四个还有一个可选的参数——,如下:pyautogui.alert("程序执行完毕","GUI自动化程序")当你在计算机上干重复的事情,为什么不直接扔给PyAutoGUI做?看着鼠标自己移动,看着文本自动出现在屏幕上,这是彻头彻尾的催眠。为什么不用节省下来的时间,舒舒服服地坐着,看着程序为你工作?看着你聪明才智帮你完成繁琐的工作,肯定会让你感到满意!我的模块使用经历我曾用过这个模块全自动登录过6个网站,但是有些网站有人机校验,无法全自动,但也能半自动了,这个模块配合这些模块最好用:time:虽然PyAutoGUI模块也可以等待一段时间,但个人更习惯使用它的sleep函数。webbrowser:与PyAutoGUI模块相似的模块,用于浏览器上的各种操作。subprocess:常用Popen方法打开应用程序或用应用程序打开文件logging:强烈建议使用!日志记录模块都看到这儿了,还不快三一下,你要白嫖啊?那点个赞呗,谢啦。感谢大家的支持!
|
|