做个机器人帮你操作电脑

pythonwanyuxue

跟紧我,有你好看

长按扫码可关注

笨重的机器人不仅能在车间代替人承担繁重的体力劳动,实际上,机器人还能在办公室里帮你操作你的电脑替你进行一部分“脑力劳动”!真的,不过这个机器人就要加上引号了——它用软件做的,帮你完成“点鼠标”、“敲键盘”等等操作——“GUI自动化”

GUI自动化技术能够通过“敲键盘”、“点击鼠标”控制应用程序,就像你坐在电脑前手握鼠标操作这个应用程序一样!你在电脑前能做什么,GUI自动化就能做什么。厉害吧!

我们可以称GUI自动化他为“机器手”——你来编程这个机器手,让它替你移动鼠标或敲击键盘。

好了,因为有了Python,一切变得简单了。读完本文你会发现,Python并非只是程序员的专利,任何有想法的人都能用它“自动化”你的工作!

我们要做的一个任务是打开windows的画图软件,然后“机器人”就帮你完成如下的图案绘制,基本上10行代码就能完成这个工作。下面我们一步一步来教大家。

本节程序执行效果

完成这个任务的主角是一个Python模块——PyAutoGUI,它能模拟“鼠标移动”、“点击”、“转滚轮”这些操作(当然不止这些,它还能做很多神奇的自动化任务)。所以我们首先要先安装它。

安装模块

打开windows的命令行,在命令行下输入如下的命令:pip install pyautogui然后回车,如下图所示:

安装完后,进入Python解释器IDLE里,引入一下这个模块看看有没有错误出现:import pyautogui,如果没有错误那就成功了(否则再重新安装下试试)。

自动移动鼠标

可以让你的程序帮你移动鼠标,但你要先了解我们电脑屏幕的“坐标”动作的。pyautogui就是按照屏幕的坐标值来移动的,请看下面的图:屏幕的最左上角的点的坐标就是(0,0)位置,从(0,0)位置开始的水平向右方向x轴的数值不断增加;从(0,0)位置开始的垂直向下方向y轴的数值不断增加。所以如果你的电脑屏幕的分辨率是1920*1080,那最右下角的坐标位置就是(1919,1079)。

电脑屏幕的坐标系统

好了我们让程序替你移动下鼠标试试吧,先在IDLE的提示符下输入如下语句,回车之后看看你的鼠标在干什么?

第一句先引入pyautogui模块;第二句写一个for循环——循环10次下面的4个命令,所以理解了这个moveTo()函数就知道它要干什么了!moveTo()函数的功能就是将鼠标移动到某个位置;里面有三个参数:第一和第二个参数就是要移到的x轴和y轴坐标值;第三个参数duration可写可不写,写了就是设置用多长时间将鼠标移到目标位置。所以想一想,上面的代码会让鼠标干什么呢?对了!鼠标会顺时针沿着一个正方形移动。

moveTo()函数执行效果

与moveTo()函数功能类似的还有一个函数moveRel()函数:只不过它能移动鼠标到相对于当前位置的新位置(moveTo()移动的是“绝对位置”坐标;moveRel()移动的是“相对位置”坐标),所以下面的程序执行结果和上面的一样,只是你鼠标在哪它就在哪儿画正方形移动(注意:当x轴数值为负数时表示水平向左移动;y轴数值为负数时表示垂直向上移动)。

点击鼠标

能够“移动”鼠标之后,我们就需要“点击”鼠标了。所用的函数就是pyautogui.click(),在IDLE下测试下面代码:

>>>import pyautogui

>>>pyautogui.click(10, 5)

发生了什么?鼠标自动到左上角坐标位置(10,5)然后点击了一下(click点击的意思就是“按下鼠标,然后释放鼠标”)。click函数是点击鼠标的左键,右键呢?中间的键呢?怎么点击?看下面:

#在(200,250)位置点击右键

>>>pyautogui.click(200, 250, button='right')

#在(100,250)位置点击右键

>>>pyautogui.click(100, 250, button='middle')

#在当前位置双击鼠标左键

>>>pyautogui.doubleClick()

拖拽鼠标

所谓“拖拽鼠标”就是——按住鼠标的左键或右键不放,然后移动鼠标。用到的函数就是它:

pyautogui.dragTo()

pyautogui.dragRel()

它们的用法和上面介绍的moveTo()和moveRel()一样一样的。第一个参数是x坐标;第二个参数是y坐标;第三个参数是持续时间(moveRel()是相对位置)。

好了,下面我们来做开头介绍的那个任务:让程序在画图板上自己画个画吧。将下面的代码保存为一个文件。

本节的主程序

执行上面的程序要注意:按F5运行之后你马上打开windows的画图板程序,然后选择下刷子工具,选择下你喜欢的颜色,一定要把鼠标放置在画图板程序的画图区域,然后松开手看看你编写的“机器人”自己画画吧。

大功告成,程序“机器人”自己画画了

好了,如果你认真读到这里,想必你也会产生许多想法了:我们很多重复性的需要点击、拖拽的计算机操作原来都能用Python程序来“自动完成”!事实上,Python是一个很神奇的编程工具,就在于他有像pyautogui这样成千上万的模块在里面。再比如经常用EXCEL表格工作或与图像打交道的人,也能找到相应的模块来实现类似“自动化”操作哦!

部分节选自:Automate the boring stuff with python

中文书名:《Python编程快速上手·让繁琐工作自动化》

学编程、学创造、释放你的想象力

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180809G1I5G900?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券