本文共3500余字,估计阅读时候12分钟,本文知乎毗连:Python自动操纵GUI神器PyAutoGUI,本文同步公布于silaoA的博客和微信公众号平台。 关注进修领会更多的Cygwin、Linux、Python技术。 平常利用计较机,号令行法式可以说是为批量操纵文件而生,但作为普通用户,最多的还是经过鼠标键盘操纵五花八门的图形界面法式。试想下面一个场景:有不计其数个文件,都需要经过图形界面停止一样的一套编辑、保存工作,靠手工一遍一遍地反复做,累死人不说,时候久了必定出现毛病,作为法式猿,怎样能忍反复3次以上的工作,必须操纵法式自动化。要想图形界面也能像号令行法式那样切确控制,就需要GUI自动化工具了。不能不赞Python生态之丰富,GUI自动化自动化工具也有多种库可选,比如Windows平台的 目 录
0x00 PyAutoGUI简介
依照官方的说法, 0x01 PyAutoGUI利用入门安装保举经过pip安装,一行号令搞定。 python -m pip install -U pyautogui
__main__.py _pyautogui_java.py # 空文件,猜测是未来支持 _pyautogui_osx.py _pyautogui_win.py _pyautogui_x11.py 快速上手
1. 通勤奋用 In [1]: import pyautoguiIn [2]: pyautogui.size() # 获得屏幕尺寸(分辨率×分辨率) Out[2]: Size(width=1920, height=1080) In [3]: pyautogui.position() # 获得鼠标当前位置 Out[3]: Point(x=846, y=437) In [4]: pyautogui.onScreen(100,200) # 判定坐标能否在屏幕范围内 Out[4]: True In [5]: pyautogui.onScreen(100,2000) # 判定坐标能否在屏幕范围内 Out[5]: False 坐标系统相当重要,后续鼠标位置、图片巨细都按照这套系统界说。 屏幕坐标系统 2. 鼠标控制 鼠标移动,包括绝对位置移动和相对位置移动。 In [7]: sizex,sizey=pyautogui.size() # 保存屏幕尺寸# 绝对位置移动,移动至屏幕正中心,鼠标移动过渡时候duration设为1秒 In [9]: pyautogui.moveTo(sizex/2,sizey/2,duration=1) # 相对位置移动,向右100、向上200,鼠标移动过渡时候duration设为0.5秒 In [10]: pyautogui.moveRel(100, -200, duration=0.5) 鼠标点击,一个 In [16]: pyautogui.click(sizex/2,sizey/2, duration=0.5) # 不指定x、y,在当前位置点击一下右键 In [17]: pyautogui.click(button='right') # 移动至(100,100)点击3次左键,点击间隔0.1s,鼠标移动过渡时候0.5秒 In [18]: pyautogui.click(100,100, clicks=3,interval=0.1,duration=0.5) # 移动至(100,100)点击2次右键,点击间隔0.5s,鼠标移动过渡时候0.2秒 In [19]: pyautogui.click(100,100, clicks=2,interval=0.5,button='right',duration=0.2) 转动鼠标滚轮。 # 鼠标位置不动,向上回滚2个单元,项目文档对转动量参数说明不详In [22]: pyautogui.scroll(2) # 鼠标移动至(1000,700),前下转动10个单元 # 运转发现鼠标并没有动 In [26]: pyautogui.scroll(-10,1000,700) 鼠标拖曳,指从当前位置按下鼠标,移动至方针位置再开释的进程,指定方针位置一样有绝对位置和相对位置两种方式,和移动鼠标函数很像。别的,试用下来,未发现 In [32]: pyautogui.dragTo(sizex/2,sizey/2) # 将鼠标从当前位置向左100像素、向右200像素拖动,过渡时候0.5秒,指定右键 In [33]: pyautogui.dragRel(-100,200,duration=0.5,button='right') 3. 键盘控制 控制按键,也是一个 In [4]: pyautogui.press('a') # 按字母A键,字母支持巨细写 # 法式向终端输入了字符a,若法式运转时输入法为中文状态,由于没有继续输入空格或回车,输入法仅列出候选字,并不会输入到终端 In [5]: a # 传入键名列表(按键p、按键y、空格),按键之间间隔0.1秒(默许0) In [6]: pyautogui.press(['p','y','space'], interval=0.1) # 运转前将输入法切换到中文状态,往终端间接输入了“培育” In [7]: 培育 # typewrite方式一:传入字符串,不支持中笔墨符,由于函数没法晓得输入法需要什么按键才能获得中笔墨符 In [9]: pyautogui.typewrite('hello, PyAutoGUI!\n') # 法式把字符串"'hello, PyAutoGUI!"和换行符输入到了终端 In [10]: hello, PyAutoGUI! ...: # typewrite方式二:传入键名列表,按键之间间隔0.1秒(默许0) In [11]: pyautogui.typewrite(['s','r','f','space'], interval=0.1) # 运转前将输入法切换到中文状态,往终端间接输入了“输入法”3个字 In [12]: 输入法 # 巨细写字母是自动支持的,照旧尝试一次切换到大写 In [13]: pyautogui.typewrite(['capslock','p','y']) # CapsLock按键灯被点亮,法式往终端输入了"PY" In [14]: PY # hotkey屏障了需要频频keyDown、keyUp的细节,参数是肆意个键名,而非列表 In [18]: pyautogui.hotkey('ctrl', 'shift', 'esc') #调出使命治理器 In [19]:pyautogui.hotkey('alt','ctrl','delete') # 并未调出重启界面 4. 消息窗口
Out[24]: 'OK' # 点击的按键被返回 In [28]: pyautogui.confirm(text='请挑选',title='PyAutoGUI消息框',buttons=['1','2' ...: ,'3']) Out[28]: '2' # 点击的按键被返回 In [30]: pyautogui.prompt(text='请输入',title='PyAutoGUI消息框',default='请输入') Out[30]: 'input by 伪码人' # 点OK按钮后返回输入内容 In [32]: pyautogui.password(text='输入密码',title='PyAutoGUI消息框',default='',mask='*') Out[32]: 'We_Coder' # 点OK按钮后返回输入内容 PyAutoGUI的4种消息框 5. 截图相关
# region参数,截图地区,由左上角坐标、宽度、高度4个值肯定,假如指定地区超越了屏幕范围,超越部分会被黑色添补,默许`None`,截全屏 In [41]: pyautogui.screenshot('shot.png',region=(1000,600,600,400)) Out[41]: <PIL.Image.Image image mode=RGB size=600x400 at 0x20C87497390> PyAutoGUI截图600×400
pyautogui.moveTo(*loc, duration=0.5) # 移动鼠标 pyautogui.click(clicks=1) #点击 0x02 使命示例前文只是
决议走
操纵函数代码。 import osimport pyautogui as pag __sizex__, __sizey__ = pag.size() #获得屏幕尺寸 def cad_turn(cad_file, outd): ''' cad_file : 要操纵的CAD文件 outd : 文件输前路子 ''' c = pag.locateCenterOnScreen(__icon_open__, region=(0,0,__sizex__/10,__sizey__/20) ) # 翻开图标,图标事前截图保存 pag.moveTo(*c, duration=0.05) pag.click( button="left") # 点击翻开按钮 pag.moveRel(__sizex__/4, __sizey__/4) # 确保文件翻开窗口获得焦点 pag.typewrite(message=cad_file,interval=0.1) # 输入文件途径 pag.press('enter') c = pag.locateCenterOnScreen(__icon_view__, region=(__sizex__/4, 0,__sizex__/2, __sizey__/10) ) # 扭转视图图标 pag.moveTo(*c, duration=2) pag.click(clicks=7, interval=1, button="left") # 点击扭转视角按钮 c = pag.locateCenterOnScreen(__icon_saveas__, region=(0, 0, __sizex__/10, __sizey__/20) ) # 另存为图标 pag.moveTo(*c, duration=0.2) pag.click( button="left") # 点击另存为按钮 pag.moveRel(__sizex__/4, __sizey__/4) # 确保文件翻开窗口获得焦点 pag.typewrite(message=os.path.join(out, fbase+'-se'), interval=0.1) # 输入保存途径 pag.press('enter') # 封闭一切能够存在的窗口,避免占用太多内存 while( True ): try : pag.moveTo(__sizex__/2, __sizey__/2, duration=0.3) # 延时 c = pag.locateCenterOnScreen(__icon_close__, region=(__sizex__/5, 0, __sizex__*3/5, __sizey__/20) ) pag.moveTo(*c, duration=0.1) # 移到“x”按钮 pag.click( button="left") # 点击“x”按钮 except TypeError: break 主函数代码。 if __name__ == "__main__":p = r'x/y/z/CAD文件地点途径' cad_src = glob_file_list( p, r"*.DXF") # 婚配出要操纵的文件 total = len(cad_src) if(total == 0): print('无文件需处置,退出...') try: for idx,x in enumerate(cad_src, start=1): print("[{}/{}] 处置{}...".format(idx, total, x)) cad_turn(x, "out") except Exception as e: print("毛病:{}".format(e)) 开启看图软件,输入法切换到英文状态,再运转Python法式,结果见视频。 参考
更多阅读
如本文对你有帮助,或内容引发极端舒适,接待分享转发与留言交换 ►本文为原创文章,如需转载请私信知乎账号silaoA或联系公众号伪码人(We_Coder)。 最初,好书保举。 |
近日深度操作系统官方宣布,国产操作系统deepin 20.6版本正式上线,新版本升级了Stabl
【键盘操作方法大全】键盘可不仅仅能帮我们打字哦,还有很多快捷的操作你都知道吗?除
关于电脑的一些基本常识和操作(电脑初学者必备) 众所周知,在21世纪的今天,电脑
知乎Markdown适配不行,希望在我的博客中查看文章作者寄语操作系统实验的学习是一个循
前言只有光头才能变强这个学期开了Linux的课程了,授课的老师也是比较负责任的一位。
大家好,我是你们的新朋友叨叨张,很高兴能够在这里和大家相遇,今天我要分享的主题是
大家好我是正经人你以为上来就要教封面上那个效果吗?当然不是,那个是我好几年前做的
操作系统的数十年沉浮1946年诞生第一台计算机时,还没有操作系统。程序员靠着「打孔」
在编程届有个共识,想要成为一个合格的程序员必须要掌握 GitHub 的用法!接下来,我们
(预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料)一:Git是什么
前言介绍快捷键,也就是刷刷按几下键盘上的组合键就可以达到鼠标点很多下才能实现的效
我在上篇文章说过,上海医保需要社保(即养老保险)成功转入杭州后才能进行转移,申请
高中化学实验真复杂,包学习APP为你整理最全总结,不怕记不住!一、中学化学实验操作
最近收到不少读者留言,关于怎么学「操作系统」和「计算机网络」的留言,小林写这一块
文/小渔俗话说:“好记性不如烂笔头。”在无纸时代,记笔记当然也不一定要用烂笔头了
之前安利过不少值得安装或使用的软件,但这一次我想换个角度,写一些强烈不建议安装的
服务器地址:http://kms.03k.org(点击检查是否可用);服务作用:在线激活windows和off
从Windows8开始,Windows的开机速度有了极大的提高,这得益于一项新的功能:快速启动
国产流氓软件之所以流氓就流氓在 “ 买一赠N ”装一个软件,就会给你附赠N个流氓软件
推荐10个超好玩的网站,窥探别人的记忆,敲键盘听歌,办公偷懒神器,看中国古今妖怪…
声明:本站内容由网友分享或转载自互联网公开发布的内容,如有侵权请反馈到邮箱 1415941@qq.com,我们会在3个工作日内删除,加急删除请添加站长微信:15924191378
Copyright @ 2022-2024 私域运营网 https://www.yunliebian.com/siyu/ Powered by Discuz! 浙ICP备19021937号-4