今天介绍一个很有用的python库——Pyautogui,它可以通过屏幕的xy坐标系统来确定目标位置,进而控制鼠标和键盘发送虚拟的点击和输入任务。这对于你要完成机械重复枯燥的电脑操作来说非常地方便。

安装Pyautogui库很简单,命令窗口输入:

pip install pyautogui

1 Pyautogui的坐标轴系统

Pyautogui的鼠标函数使用想x,y坐标,原点在屏幕的左上角,向右为x轴正方向,向下为y轴正方向。知道了这个就可以任意定位屏幕上的点啦。

不过,想要准确知道屏幕上的坐标也不是一件容易的事,这里推荐一个超级好用的工具——FastStone Capture 。这个小工具除了定位坐标,还能各种花式截图,包括形状截图,滚动截图,并且还能录制屏幕,取色。

2 控制鼠标

(1)确定鼠标当前位置

pyautogui.position() #确定鼠标当前位置,返回x,y坐标的元组

(2)移动

pyautogui.moveTo(x,y[,duration = t]) # 将鼠标移动到屏幕指定位置, #x,y是目标位置的横纵坐标,duration指定鼠标光标移动到目标位置 #所需要的秒数,t可以为整数或浮点数,省略duration参数表示 #立即将光标移动到指定位置(在PyAutoGUI函数中,所有的duration #关键字参数都是可选的) #Attention:所有传入x,y坐标的地方,都可以用坐标x,y #的元组或列表替代,(x,y)/[x,y]pyautogui.moveRel(x,y[,duration = t]) #相对于当前位置移动光标, #这里的x,y不再是目标位置的坐标,而是偏移量, #如,pyautogui.moveRel(100,0,duration=0.25) #表示光标相对于当前所在位置向右移动100个像素

(3)点击

完整的点击:按下鼠标按键,然后放开,同时不移动位置

pyautogui.mouseDown() #按下鼠标按键(左键)pyautogui.mouseUp() #释放鼠标按键(左键)pyautogui.click() #向计算机发送虚拟的鼠标点击(click()函数只是前面两个函数调用的方便封装) # 默认在当前光标位置,使用鼠标左键点击pyautogui.click([x,y,button='left/right/middle']) #在(x,y)处点击鼠标左键、右键、中键 #但不推荐使用这种方法,下面这种方法效果更好 #pyautogui.moveTo(x,y,duration=t) #pyautogui.click()pyautogui.doubleClick() #双击鼠标左键pyautogui.rightClick() #单击鼠标右键pyautogui.middleClick() #单击鼠标中键

(4)拖动

拖动:按住一个键不放,同时移动鼠标

pyautogui.dragTo(x,y[,duration=t) # 将鼠标拖动到指定位置 #x,y:x坐标,y坐标pyautogui.dragRel(x,y[,duration=t]) # 将鼠标拖动到相对当前位置的位置 #x,y:水平移动, 垂直移动

(5)滚动

pyautogui.scroll() #控制窗口上下滚动(滚动发生在鼠标的当前位置) #正数表示向上滚动,负数表示向下滚动, #滚动单位的大小需要具体尝试

点击鼠标的动作最好跟time.sleep使用,来控制点击速度,不然太快不好掌握。最近我DEFORM要计算的DB文件太多了,为了赶时间,我想让程序晚上也能计算。但我要睡觉啊,所以就写了下面一个很简单的例子。

import pyautogui as ptimport timei = 1pt.moveTo(422,141) #移动到第一个DB文件处time.sleep(2) #停顿2spt.click(button='left') #选中DB文件while i<11: #11个DB文件 pt.moveTo(756,69) #移到运算按钮 time.sleep(2)   #停顿2s pt.click(button='left') #点击运算按钮 pt.moveTo(950,545) #移到确定按钮 pt.click(button='left') #点击确定按钮 time.sleep(1800) #等待DEFORM一个DB文件算完 pt.moveTo(422,141+i*21) #移到下一个DB time.sleep(2) pt.click(button='left') #点击下一个DB i+=1

3 控制键盘

(1)输入字符串

直接通过typewrite方法输入字符串,这种方法不能输入中文,不过可以通过切换成中文输入法达到输入中文的目的。

pyautogui.typewrite(s[,duration=t]) #向文本框发送字符串 #可选的duration参数在输入单个字符之间添加短暂的时间暂停 #Attention:只能用于输入英文

切换中文输入法后输入下面代码,能打出"王"字,当然还要配合enter键使用。

pt.typewrite('wang')

(2)输入键字符串

用来输入Shift键、ESC键、箭头键等不能通过字符文本来输入的

pyautogui.typewrite([键盘键字符串]) #除了单个字符串,还可以向typewrite()函数传递键字符串的列表 #如 pyautogui.typewrite(['a','b','left','left','X','Y']) #按'a'键,'b'键,然后按左箭头两次,然后按'X'和'Y' #输出结果为XYabpyautogui.keyDown() #根据传入的键字符串,向计算机发送虚拟的按键(按下)pyautogui.keyUp() #根据传入的键字符串,向计算机发送虚拟的释放(释放)pyautogui.press() #前面两个函数的封装,模拟完整的击键(按下并释放)

注意,输入键盘字符串的时候括号里面的中括号不能少,不然就变成输入字符串了,keyUp,keyDown,press方法是模拟按键盘的操作达到输入字符。同样,也可以通过切换中文输入法来输入中文。比如下面的代码可以打出一个"玩"。

pt.keyDown('w')pt.keyDown('a')pt.keyDown('n')

只能一个一个拼音输入,略显麻烦!

完整键字符串:

键盘键字符串 含义'a','b','c','A','C','1','2','3', 单个字符的键'!','@','#'等'enter' 回车'esc' ESC键'shiftleft','shiftright' 左右Shift键'altleft','altright' 左右Alt键'ctrlleft','ctrlright' 左右Ctrl键'tab'(or '') Tab键'backspace','delete' Backspace键和Delete键'pageup','pagedown' Page Up 和Page Down键'home','end' Home键和End键'up','down','left','right' 上下左右箭头键'f1','f2','f3'等 F1至F12键'volumemute','volumeup',volumedown' 静音,放大音量和减小音量键'pause' 暂停键'capslock','numlock','scrolllock' Caps Lock,Num Lock和 Scroll Lock键'insert' Insert键'printscreen' Prtsc或Print Screen键'winleft','winright' 左右Win键(在windows上)'command' Command键(在OS X上)'option' Option键(在OS X上)

(3)快捷键组合:

pyautogui.hotkey('ctrl','c') #按住Ctrl键,然后按C键,然后释放C键和Ctrl键 #相当于pyautogui.keyDown('ctrl')pyautogui.keyDown('c')pyautogui.keyUp('c')pyautogui.keyUp('ctrl')

pyautogui typewrite_解放双手:Pyautogui帮你work相关推荐

  1. 扫地机器人半湿拖布_居然能自己洗拖布?云鲸智能扫拖一体机帮你真正解放双手...

    居然能自己洗拖布?云鲸智能扫拖一体机帮你真正解放双手 2020-02-18 16:00:00 32点赞 36收藏 27评论 大家好,我是黄昏百分百,今天为大家带来的是云鲸智能扫拖一体机器人的测评报告. ...

  2. 商汤科技3D人脸识别技术加持智能门锁,帮你解放双手

    刚刚过去的元旦佳节,很多人选择聚餐聚会,共同迎接新年的到来,或是跟恋人一起度过浪漫的跨年夜. 在外有欢声笑语的氛围,回到家也应该有舒适的惬意.若是来到家门口,还要放下拎着的大包小包年货,腾出手来去掏钥 ...

  3. python pywinauto 单击鼠标_教你快速用 Python 控制键盘和鼠标,彻底解放双手

    你还在为在计算机上双击或提交表单而烦恼吗?今天就用python来控制键盘和鼠标,解放双手! 第一,Pyauogui库 我们可以首先安装pyauogui库,通过它我们可以编写一些Python脚本来控制鼠 ...

  4. 微信自动输入(解放双手)

    微信自动输入(解放双手) 导包 定义文字复制函数 定义图片复制类 定义图片复制函数 定义发送函数(这里根据需求改) 最后的main   自用从 定义发送函数开始改就行了,前面几个部分直接复制进一个py ...

  5. 解放双手!用 Python 控制你的鼠标和键盘

    在工作中难免遇到需要在电脑上做一些重复的点击或者提交表单等操作,如果能通过 Python 预先写好相关的操作指令,让它帮你操作,然后你自己去刷网页打游戏,岂不是很爽? 很多人学习python,不知道从 ...

  6. 10个 解放双手的 IDEA 插件,这些代码都不用写(第二弹)

    本文案例收录在 https://github.com/chengxy-nds/Springboot-Notebook 大家好,我是小富~ 鸽了很久没发文,不写文章的日子真的好惬意,每天也不用愁着写点什 ...

  7. 手写Spring-第五章-解放双手!自动化配置!

    前言 上次我们完成了Bean之间依赖的注入.但在最后测试的时候,吃到了苦头.Bean定义的构建太麻烦了>_<!而且现在的Bean定义还只有class和属性两个内容,如果以后再继续扩充,想必 ...

  8. 还在一张张切图?PS快速切图新技能助你解放双手

    什么?你还在一张张处理??? 切图和标注一直是多数设计师最耗时且最不愿意做的事情,PS快速切图新技能,教你解放双手,快上车. 本文纲要 规则切图 不规则切图 快速批量切图 快速批量切出不同平台各种尺寸 ...

  9. 英国Shadow Robot研制世界最先进机器人灵巧手,不断革新解放双手

    来源 | 机器人大讲堂 原创 | 黑与白 人类与其他物种的区别之一,是具备灵巧的双手来进行生产和劳动.随着时代的科技爆炸,在"灵巧手"上,智慧的人类不断更新这一技术来解放双手,从而 ...

最新文章

  1. node.js学习5--------------------- 返回html内容给浏览器
  2. 全球及中国医用腋拐行业竞争格局及供需前景预测报告2021年版
  3. 让字跑起来的HTML5标签,HTML5:标记文字
  4. 玩转SSRS第六篇---客户端报表进阶
  5. mysql+tushare搭建本地数据库
  6. Linux shell中的那些小把戏
  7. 2019年9月数据库流行度排行:MySQL 强劲增长完成深 V 反转
  8. linux 使cpu使用率升高_[Linux小技巧] 一行命令让CPU占用率达到100%
  9. Android通知频道,通知点
  10. IAR平台下使用STM32的DSP配置方法
  11. CLR via C#深解笔记四 - 方法、参数、属性
  12. macOS 汇编指南
  13. 机器学习:AI数据集划分(训练集、验证集、测试集)
  14. 猪场超级管家 v4.0 免费
  15. VueJS学习资料大全
  16. 浅谈我对元宇宙、Web3、区块链与NFT的理解
  17. 推荐大家来看《赢在中国》
  18. openquery链表删除时报错 “数据提供程序或其他服务返回 E_FAIL 状态”
  19. DNS被污染后怎么才能解决?
  20. 储能电池仿真模型基于pscsd软件的三相储能电池仿真模型

热门文章

  1. oracle的基本数据类型(转载)
  2. 小谈@override
  3. 实例学习SSIS(五)--理论介绍SSIS
  4. 【剑指offer】面试题29:顺时针打印矩阵(Java)
  5. xml--Schema约束
  6. linux java amr转mp3_本工具用于将微信语音 amr 格式转换为 mp3 格式以便在 html5 的 audio 标签中进行播放...
  7. html5+实现图片自动切换,js图片自动切换效果处理代码
  8. 伸缩杆怎么缩回去图解_没有阳台怎么晾衣服?这10个神器,让家里衣物晾晒更轻松方便...
  9. python保存的图片不完整
  10. matlab的四维图像数据可视化