1. 基础语法

"GUI自动化":通过程序控制应用,向他们发送虚拟的击键和鼠标点击,即图形用户界面自动化

import pyautogui
#以下指令将返回屏幕分辨率大小
weight , height = pyautogui.size()

1.1 鼠标

(1)移动鼠标

#移动绝对坐标值(x,y,移动到该位置所需时间)
pyautogui.moveto(100,200,duration = 0.2)
#移动相对坐标
pyautogui.moveRel(100,-100,duration = 0.2)

(2)获取鼠标位置

#返回坐标元组
pyautogui.position()

(3)点击鼠标

#点击函数(x,y,点击左/右键)
pyautogui.click(x,y,button = 'left')
#鼠标按下不松开
pyautogui.mouseDown()
#释放鼠标
pyautogui.Up()
#双击左键
pyautogui.doubleClick()
#双击中键
pyautogui.middleClick()

(4)拖动鼠标

#拖动到绝对坐标位置
pyautogui.dragTo(x,y,duration = 0.2)
#拖动到相对坐标位置
pyautogui.dragRel(x,y,duration = 0.2)

(5)滚动鼠标

#正数为向上滚动,负数为向下滚动
pyautogui.scroll(100)

1.2 处理屏幕

(1)获取屏幕快照

#im包含一个Image对象,可对其调用Image方法
im = pyautogui.screenshot()
#传入坐标元组,返回该处RGB元组
im.getpixel((50,100))

(2)分析屏幕快照

可用于判断该处按钮是否为可选按钮,灰色按钮等

#参数(x,y,(R,G,B)),检查(x,y)处RGB是否完全匹配给出的RGB元组值,返回True/False
pyautogui.pixelMatchesColor(20,300,(255,255,0))

(3)图像识别

将以前保存的屏幕快照保存为‘submit.png’

#函数返回四个证书的元组,是屏幕上首次发现该图像时左边的X坐标,顶边的Y坐标,图像的宽度以及高度
pyautogui.locateOnScreen('submit.png')    #这里要求的是“完全匹配”

若该图像能在屏幕上找到多处,则 pyautogui.locateAllOnScreen() 函数将返回一个Generator对象,将他传递给List,返回一个4整数元组的列表。

1.3 键盘

(1)键盘发送字符串

#在此之前一般会先调用click函数取得焦点
pyautogui.typewrite('hello world')

(2)键名

PyKeyboard属性
键盘键字符串  含义
‘a’,'1','?'等

单个字符的键

‘enter’ / '\n'  回车键
‘esc’  Esc键
shiftleft , shiftright  左右shift键
altleft, altright  左右alt键
ctrlleft同上  左右ctrl
tab  \t  Tab键
backapace delete  空格键 Del键
pageup pagedown  Page UP/Down
home   end  Home End
up down left right  上下左右箭头键
f1 f2...  F1-F12
volumemute  volumedown volumeup  音量静音,调大,调小
pause  Pause
capslpck numlock scrolllock  功能锁
insert  同义
printscreen  同义
winleft winright  左右win键
command  Command键(OS)
option option键(OS)

注:以上调用时加上 ' '

(3)按下和释放键盘

#打印 % 符号 ‘shift+5’
pyautogui.keyDown('shift') #按下
pyautogui.press('4')     #按下并释放
pyautogui.keyUp('shift)   #释放

(4)热键组合

为了避免以上麻烦的指令,可应用热键功能,接受多个键字符串的函数,按给出的顺序按下,相反的顺序释放,于是以上代码就变成了:

pyautogui.hoykey('shift','4')

2. 实例应用

2.1 鼠标在哪里

在移动鼠标时随时显示x,y坐标,以及RGB颜色值

#@TIME :2018/4/5  16:24
#输出当前鼠标位置,以及像素RGB颜色
import pyautoguiprint("Press Crtl+C to quit")
try:while True:x, y  = pyautogui.position()positionstr = 'X:  '+str(x).rjust(4) + 'Y:  ' + str(y).rjust(4)      #格式化输出pixelcolor = pyautogui.screenshot().getpixel((x,y))                  #截图得到x,y处颜色值positionstr += '  RGB :('+str(pixelcolor[0]).rjust(3)positionstr +=', ' + str(pixelcolor[1]).rjust(3)positionstr +=', ' + str(pixelcolor[2]).rjust(3) +' )'print(positionstr)# print('\b'*len(positionstr),end='',flush=True)                     #每移动一次屏幕刷新
except KeyboardInterrupt:      #捕捉中断异常print("Done\n")

2.2 自动提交表单

#@TIME :2018/4/8  15:18
#自动填表程序 网址:https://docs.google.com/forms/d/e/1FAIpQLScSVDFU76rZvbO_tiIwSt6d9sOK0CZyS9KKMCP6cP5O5W5lVQ/viewformimport pyautogui,time
# 0 要输入的信息(以列表中元组的形式)
FormData = [{'name':'Alex','fear':'eavesdroppers','source':'money','robocop':4,'comments':'Tell bob i said hi'},{'name':'Bob','fear':'bees','source':'wand','robocop':3,'comments':'n/a'}
]
# 1 找到各按钮的确切位置(通过上一个例子确定按钮位置)
namefield = (369,333)
submit= (400,524)
submitcolor = (156, 141, 248)
submitanother = (517,245)
#2 开始键入数据
for person in FormData:print(">>>5s pause to let users press crtl-c")     #给5秒的时间确定屏幕焦点time.sleep(5)# while not pyautogui.pixelMatchesColor(submitcolor[0],submitcolor[1],submitcolor[2]):#     time.sleep(0.5)print("Entering %s info..."%(person['name']))pyautogui.click(namefield[0],namefield[1])pyautogui.typewrite(person['name'] + '\t')     #'\t'进行下一项的填写pyautogui.typewrite(person['fear']+'\t')
# 3 处理列表和单选按钮if person['source'] == 'wand':      #下拉菜单pyautogui.typewrite(['down','\t'])elif person['source'] == 'money':pyautogui.typewrite(['down','down','down','down','\t'])if person['robocop'] == 3:     #单选按钮pyautogui.typewrite(['right','right','\t'])elif person['robocop'] == 4:pyautogui.typewrite(['right','right','right','\t'])pyautogui.typewrite(person['comments'] +'\t')pyautogui.typewrite('enter')   #提交
# 4 开始另一份print("Submit clicked")pyautogui.click(submitanother[0],submitanother[1])  #开始另一个

3. 课后习题

18.14.1 看起来很忙机器人

#@TIME :2018/4/8  16:02
#不想通信软件变为空闲,每隔十秒钟动一下鼠标
import pyautogui,timeTIMESLEEP = 5
try:while True:x,y = pyautogui.position()print(x,y)time.sleep(TIMESLEEP)pyautogui.moveRel(10,0,duration=0.2)
except KeyboardInterrupt:quit()

Python让繁琐工作自动化——chapter18 GUI控制键盘与鼠标相关推荐

  1. python—让繁琐工作自动化

    python,在占领国一段时间的朋友圈,是关于编程的东西.大都是是扫码进入学习群之类的东西.只是不知道哪些当时刷圈的小伙伴们学的怎么样了,大致也有一两个月的时间. 为什么提起这个,因为最近也看到一些p ...

  2. python自动化办公入门书籍推荐-好书推荐 | Python 如此神奇,让繁琐工作自动化...

    原标题:好书推荐 | Python 如此神奇,让繁琐工作自动化 Python 如此神奇,让繁琐工作自动化 编程的威力 如今,人们面临的大多数任务都可以通过编写计算机软件来完成. Al Sweigart ...

  3. python 复制文件并重命名_好书推荐 | Python 如此神奇,让繁琐工作自动化

    优质文章,第一时间送达! Python 如此神奇,让繁琐工作自动化 编程的威力 如今,人们面临的大多数任务都可以通过编写计算机软件来完成. Al Sweigart 的室友曾经只花了几个小时,就写出了一 ...

  4. Python程序员的圣经——《Python编程快速上手:让繁琐工作自动化》尾末附下载地址

    一.前言 如今,人们面临的大多数任务都可以通过编写计算机软件来完成.Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.通过Python编程,我们能够解决现实生活中的很多任务. 今天给 ...

  5. python经典书记必读:Python编程快速上手 让繁琐工作自动化

    所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/69/ 来源:python黑洞网,专注 ...

  6. Python编程快速上手,让繁琐工作自动化(附下载)

    今天给大家分享一份Python程序员的圣经--<Python编程快速上手:让繁琐工作自动化>.这是本面向实践的Python编程实用指南. 目录 第一章 Python基础 第二章 控制流 第 ...

  7. 《Python编程快速上手——让繁琐工作自动化》——第一部分 Python编程基础 第1章 Python基础 1.1 在交互式环境中输入表达式...

    本节书摘来自异步社区<Python编程快速上手--让繁琐工作自动化>一书中的第1章,第1.1节,作者[美] Al Sweigart,王海鹏 译,更多章节内容可以访问云栖社区"异步 ...

  8. python自动化办公入门书籍-Python如此神奇,让繁琐工作自动化 (文中含Python基础)...

    原标题:Python如此神奇,让繁琐工作自动化 (文中含Python基础) "你在2个小时里完成的事,我们3个人要做两天."21世纪早期,我的大学室友在一个电子产品零售商店工作.商 ...

  9. 导入python标准数学函数模块的语句_《Python编程快速上手——让繁琐工作自动化》——2.8 导入模块...

    本节书摘来自异步社区<Python编程快速上手--让繁琐工作自动化>一书中的第2章,第2.8节,作者[美] Al Sweigart,王海鹏 译,更多章节内容可以访问云栖社区"异步 ...

  10. python快速上手 让繁琐工作自动化 英文版_入门python:《Python编程快速上手让繁琐工作自动化》中英文PDF+代码...

    入门推荐学习<python编程快速上手>前6章是python的基础知识,通俗易懂地讲解基础,初学者容易犯错的地方,都会指出来.从第三章开始,每章都有一个实践项目,用来巩固前面所学的知识. ...

最新文章

  1. 用了 HTTPS 就一定安全吗?HTTPS 原理分析——带着疑问层层深入
  2. java中接口什么时候用_我什么时候应该在java中使用接口?
  3. 《那些年啊,那些事——一个程序员的奋斗史》——60
  4. centos 6 x64 mysql_CentOS 6.x版本升级Mysql
  5. (8)FPGA面试题触发器满足建立时间和保持时间的原因
  6. python中的urlencode和urldecode
  7. 【二分法】计蒜客:二分答案
  8. Direct3D光与材质的颜色值
  9. composer.install
  10. 想法独特 上半年最具特色摄像头集锦
  11. 二进制文件是什么?到底二进制文件和纯文本文件的区别是什么?为什么图像、音频是二进制文件?
  12. 服务器怎么建立无线局域网,家庭无线局域网的组建教程
  13. springboot Nexus Repository Maven仓库搭建及使用
  14. Python小测验(01)
  15. 揭开深度跟踪的力量--Unveiling the Power of Deep Tracking (ECCV2018)
  16. 计算机基础知识(基础入门小白专属)四
  17. python 163邮箱发送邮件
  18. 小甲鱼汉诺塔代码理解
  19. 1086:角谷猜想(C C++)
  20. [2017全球人工智能高峰论坛]城市大脑是下一个十年的登月计划 王坚说出了什么?...

热门文章

  1. python数据分析之(1)数据输入和输出
  2. CVPR 2022 Oral | 目标检测新工作!南大开源AdaMixer:快速收敛的基于查询的目标检测器...
  3. 图像/视频超分之BackProjection
  4. Python socket粘包解决
  5. 《构建之法》阅读笔记1
  6. 微信手机开发 ios android 您没有APP支付权限
  7. JBOSS AS 性能调整优化
  8. Entity Framework 常用类
  9. 【第三方软件】利用WIN8系统自带的绘图软件获取图像信息(位置和颜色信息)
  10. 奥威尔:老大哥在看着你-软件公司十诫