当前位置:   article > 正文

利用Python实现电脑鼠标和键盘办公自动化_python自动控制键盘

python自动控制键盘

Python的确是一个了不起的编程语言和工具,它可以用来构建各种脚本和实用程序,这些脚本和实用程序可以帮助你化繁为简、让很多事情都实现自动化…以下是从海外博客上学习积累到的,做个分享,如果感兴趣,会陆陆续续做些编辑补充。文末领取读者福利

利用Python实现电脑鼠标和键盘自动化

这次,我们会使用Python模块PyAutoGUI来使我们的鼠标和键盘自动化。曾经看到许多与PyAutoGUI相关的文章,不过在这里我们可以尝试提供一些使用此模块的独特玩法。

安装步骤

Windows上:在该系统安装和使用PyAutoGUI非常容易。如果已安装pip,则可以用pip,从PyPI安装它。

pip install pyautogui
  • 1

Os X上:需要安装一些额外的模块才能运行PyAutoGui。

pip3 install pyobjc-core
pip3 install pyobjc
pip3 install pyautogui
  • 1
  • 2
  • 3

Linux上:同样的,也必须安装一些软件包。

pip3 install python3-xlib
sudo apt-get install scrot
sudo apt-get install python3-tk
sudo apt-get install python3-dev
pip3 install pyautogui
  • 1
  • 2
  • 3
  • 4
  • 5

好的,开始吧,使用PyAutoGUI执行以下操作

(注:如果你想制作出更有逼格的自动化工具,则可以将后面的模块集成到Selenium、OpenCV等其它一些出色的模块中)

1)安全功能

安全-停顿

“停顿“是PyAutoGUI中的一个选项,用于设置每次模块调用之间的“停顿“时间,假设,我们有两个功能,一个是write操作,另一个是click操作,则经配置该选项,第二个功能在配置的“一个时间间隔”之后执行。

pyautogui.PAUSE = dur # 2.5
  • 1

安全-故障安全

此选项的作用类似于使用CTRL + C取消程序,如果此选项设置成True,则pyautogui.FailSafeException通过将鼠标移至屏幕的左上角来中止程序并声明异常。

pyautogui.FAILSAFE = True
  • 1

2)鼠标功能

鼠标-移动

我们可以使用pyautogui class的以下功能将鼠标移至屏幕的x,y坐标

动图

鼠标移动

pyautogui.moveTo(x, y, duration=num_seconds)
  • 1

其中x和y是屏幕上的XY坐标,x向右增加,y向向下增加;duration是以秒为单位的时间,该时间使鼠标的移动根据时间而变慢;还有另一个功能,它使鼠标相对于鼠标的当前位置移动,这简单地意味着它将从当前鼠标位置向左和向右移动鼠标(100,100)。

pyautogui.moveRel(xOffset, yOffset, duration=num_seconds)
# 你也可以使用 pyautogui.move(xOffset, yOffset) 去实现
  • 1
  • 2

这里,xOffset和yOffset分别是鼠标x和y到当前位置的增量。

鼠标-拖拽

另一个很棒的功能是“拖动鼠标”,拖动指的是在按住单击按钮的同时移动鼠标,你可以通过以下功能实现拖动。

动图

pyautogui.dragTo(x, y, duration=num_seconds)
pyautogui.dragRel(xOffset, yOffset, duration=num_seconds)
# 你仍旧可以用 pyautogui.drag(xOffset, yOffset) 
  • 1
  • 2
  • 3

鼠标-点击次数

日常中我们可以使用鼠标执行不同类型的点击,同样PyAutoGUI可以让我们实现许多相似的功能:

  • 单击、双击和三次点击
  • 鼠标按键向上和向下事件
  • 左点击、右点击和中间点击

语法

pyautogui.click(x=None, y=None, clicks=1, interval=0.0, 
button='left', duration=0.0)

  • 1
  • 2
  • 3

click()功能的实践

pyautogui.click() # 在现有位置点击鼠标
pyautogui.click(20,10) # 移动到 20, 10, 然后左点鼠标
# 你也可以传递一个python的元组 (20,10)
pyautogui.click(button='right') # 右键单击鼠标
pyautogui.click(button='middle') # 点击鼠标中间键
pyautogui.click(button='left') # 左键单击鼠标
# 你也可以通过上面的方法传递它
pyautogui.click(clicks=2) # 双击鼠标左键
pyautogui.click(clicks=2, interval=0.25) # 双击鼠标左键,但两次单击之间的间隔为0.25秒
pyautogui.click(button='right', clicks=3, interval=0.25) ## 击鼠标右键,两次单击之间有0.25秒的暂停

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

也有单独的功能来完成相同的工作。

pyautogui.doubleClick()#鼠标左键双击
pyautogui.rightClick()#右键单击
pyautogui.middleClick()#中键单击
pyautogui.trippleClick()#左键三次
每个功能都有更多可选属性,例如x和y坐标,持续时间和间隔

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

鼠标的点击和拖动包括按下鼠标按键并向上放开鼠标按键,如果要单独执行这些操作,请调用mouseDown()和mouseUp()函数,它们具有相同的x,y和button。

3)滚动功能

可以通过调用scroll()函数并传递整数个“单击”来滚动鼠标滑轮,在不同平台上,“单击”中的滚动量会有所不同。

语法

pyautogui.scroll(clicks, x=None, y=None)

  • 1
  • 2

你可以使用如下scroll()功能:

动图

鼠标滚动

pyautogui.scroll(10)   #向上滚动10次“单击” 
pyautogui.scroll(-10)  #向下滚动10次“单击” 
pyautogui.scroll(10,x = 100,y = 100)  #将鼠标光标移至100、200,然后向上滚动10次“点击”

  • 1
  • 2
  • 3
  • 4

你可以hscroll()在linux和OSX平台中左右滚动。

4)键盘功能

键盘-键入

我们可以在pyautogui class中的函数的帮助下录入字母、单词或句子,它还提供了每个键入单词之间的延迟,这使它更加炫酷。

pyautogui.typewrite('Hello world!') #即可输出“ Hello world!”

  • 1
  • 2

如果要为这个句子添加动画效果,而且希望电脑在一小段时间后编写这个句子,可以使用interval属性。

pyautogui.typewrite('Hello world!',interval = 0.25)
#打印出“ Hello world!” 每个字符后延迟0.25秒

  • 1
  • 2
  • 3

键盘-按特殊指令按键

动图

按特殊按键

要按上面这些键,请调用该press()函数并将字符串中定义的值传递给该函数。

要按下多个键,传递一个元组或键列表,还需要采用另一个可选属性presses=1 来限制按键的按下次数;还有一个属性interval=0.0,它是设定每次按键之间的间隔。

定义了此功能的键,可以通过以下选项进行检索pyautogui.KEYBOARD_KEYS,它会输出所支持的已定义键的列表。例如:enter,up,down,esc,f1。参见:

pyautogui.press('enter')  #按Enter键
pyautogui.press('f1')     #按F1键
pyautogui.press('left')   #按向左箭头键

  • 1
  • 2
  • 3
  • 4

press()只不过是keyUp()和keyDown()功能的封装包,它模拟按下一个键然后放开它。

pyautogui.keyDown('shift')  #按住Shift键
pyautogui.keyUp('shift')    #释放Shift键

  • 1
  • 2
  • 3

按键-快捷方式

为了方便快捷地按下键盘快捷键,hotkey()可以传递几个键字符串,这些字符串将按顺序按下,然后以相反的顺序释放。

pyautogui.hotkey('ctrl','shift','esc')#同时按下CTRL + SHIFT + ESC

  • 1
  • 2

上面的代码相当于:

pyautogui.keyDown('ctrl')     #按住CTRL按钮
pyautogui.keyDown('shift')    #按住SHIFT按钮
pyautogui.keyDown('esc')      #按住ESC按钮
pyautogui.keyUp('esc')        #释放ESC按钮
pyautogui。 keyUp('shift')      #释放SHIFT按钮
pyautogui.keyUp('ctrl')       #释放CTRL按钮

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

5)消息提示功能

PyAutoGUI还显示JavaScript样式的提示框,一共有四种提示框功能:

消息提示-报错/警示

显示带有文本和单个“确定”按钮的简单消息框,返回单击的按钮的文本。

img

报错

pyautogui.alert(text='', title='', button='OK')

  • 1
  • 2

消息提示-确认窗口

显示带有“确定”和“取消”按钮的消息框,可以自定义按钮的数量和文本,返回单击的按钮的文本。

img

确认窗口

pyautogui.confirm(text='', title='', buttons=['OK', 'Cancel'])

  • 1
  • 2

消息提示-提醒窗口

显示带有文本输入以及“确定”和“取消”按钮的消息框。返回输入的文本,如果单击“取消”,则返回“无”。

img

提醒窗口

pyautogui.prompt(text='', title='' , default='')

  • 1
  • 2

消息提示-密码输入

显示带有文本输入以及“确定”和“取消”按钮的消息框,输入的字符显示为*。返回输入的文本,如果单击“取消”,则返回“无”。

img

密码录入

password(text='', title='', default='', mask='*')

  • 1
  • 2

6)屏幕截图功能

PyAutoGUI可以截取屏幕截图,将其保存到文件中,并在屏幕上定位图像。如果你需要单击一个按钮(图片类型)并想在屏幕上找到它的位置,这个方法会很有用。

截屏-截图

调用screenshot()将返回一个Image对象,传递文件名字符串将把屏幕截图保存到文件中,并将其作为Image对象返回。

im1 = pyautogui.screenshot()
im2 = pyautogui.screenshot('my_screenshot.png')

  • 1
  • 2
  • 3

如果你不需要整个屏幕的屏幕截图,那么还有一个可选的region关键字参数,,你可以传递区域的左侧、顶部、宽度以及高度的四整数元组来捕获:

im = pyautogui.screenshot(region =(0,0,300,400))

  • 1
  • 2

截屏-在屏幕上找到图像

如果想快速定位屏幕中上的图像文件,当然可以在屏幕上直观地找到它们,譬如,假设计算器应用程序正在您的计算机上运行,如下所示:

img

同时其中包含一个按钮的图像,譬如是按钮“7”:

img

你可以调用该locateOnScreen(‘7key.png’)函数以获取屏幕坐标,返回值为4整数元组:左、上、宽度、高度,不过,如果你只想在屏幕上显示图像的x和y坐标,则可以调用locateCenterOnScreen()它,该方法将仅返回x和y坐标;如果找不到屏幕上的图像,它将升高ImageNotFoundException;如果要单击该图像或对象,只需将先前函数的返回值中的x和y坐标传递给click()function。

img
同时其中包含一个按钮的图像,譬如是按钮“7”:
img
你可以调用该locateOnScreen(‘7key.png’)函数以获取屏幕坐标,返回值为4整数元组:左、上、宽度、高度,不过,如果你只想在屏幕上显示图像的x和y坐标,则可以调用locateCenterOnScreen()它,该方法将仅返回x和y坐标;如果找不到屏幕上的图像,它将升高ImageNotFoundException;如果要单击该图像或对象,只需将先前函数的返回值中的x和y坐标传递给click()function。

7)其它

其它-屏幕尺寸

为了获取屏幕尺寸,PyAutoGUI具有一个size()返回整数元组的函数:(宽度,高度)表示主监视器的尺寸。

pyautogui.size()    #输出:Size(width = 1366,height = 768)
  • 1

其它-光标位置

为了获取光标的当前位置,PyAutoGUI有一个函数position()返回整数元组:(x,y)表示鼠标光标的当前位置。

pyautogui.position()#输出 :点(x = 487,y = 664)
  • 1

后续会陆陆续续补上一些其它有趣的办公自动化技巧

-END-


学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、自动化测试带你从零基础系统性的学好Python!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/109222?site
推荐阅读
相关标签