有些朋友可能玩过按键精灵,一个用来操作键盘鼠标完成一些自动化工作的软件。其实如果你学了Python的话,完全用不着按键精灵这种东西了。因为广泛的Python类库里,就有PyAutoGUI这样可以变成控制键盘鼠标的类库,有了它,就可以用Python随心所欲的操作电脑了。而且这个类库是跨平台的,Windows、Linux、macOS都可以用,是不是很吸引人呢?

Github页面

安装和使用

安装PyAutoGUI非常简单,从pip安装即可。

pip install pyautogui

用pip安装

这里顺便介绍一下PyAutoGUI的坐标系统,和一些常见的绘图坐标系统相同,左上角为原点,向右是x轴正方向,向下是y轴正方向。假如你的屏幕是1920*1080,那么右下角的坐标就是(1919, 1079),因为坐标是从0开始的,而不是从1开始的,这一点要格外注意。

PyAutoGUI虽然有很多函数,但是函数的作用基本上就是单击/双击鼠标、敲击/按下/弹起按键这样的,函数参数也就是点击间隔、点击按键这样很简单的参数。所以我就不列例子了,总之用起来非常简单。

函数简介

下面来介绍一下PyAutoGUI的函数。先来看看鼠标操作函数,主要是点击、拖动、滑动滚轮这些操作。

鼠标操作

键盘操作函数,主要就是按键、组合键操作。

键盘操作

提示框函数,可以用来显示警告、确认、提示和密码输入对话框,增强程序可操作性。显示对话框的时候,程序会暂停,直到用户处理对话框。

提示框函数

截图函数,可以从屏幕上截图,也可以根据已有图片从屏幕上定位。主要用途是事先保存一些按钮图片,然后从屏幕上识别定位来点击按钮。

截图函数

操作实例

首先来看看官网的一个画图例子,我们需要打开一个画图程序的窗口,然后将它放到全屏。然后运行下面的代码,然后切换到画图窗口。等待3秒钟以后就可以看到PyAutoGUI开始画图了。

import pyautogui

distance = 100pyautogui.moveTo(400, 300)while distance > 0:    pyautogui.drag(distance, 0, duration=0.1)    distance -= 5    pyautogui.drag(0, distance, duration=0.1)    pyautogui.drag(-distance, 0, duration=0.1)    distance -= 5    pyautogui.drag(0, -distance, duration=0.1)

结果如下。其实这个画图的代码很简单,就是一圈一圈缩小,然后调用drag函数拖住画笔不放。

画出来的图

再来看一个图片识别的例子,这个例子需要先安装OpenCV库和opencv-python包。安装之后就可以运行下面的例子了。这个例子保存了windows 10计算机的几个按钮截图,然后通过图形识别的方式找到并点击按钮执行操作。注意下面用到了confidence参数,即使图片没有完全匹配也可以识别到。

import pyautoguiimport time

time.sleep(3)

# Windows计算器的按钮截图five = '5.png'eight = '8.png'multiply = 'multiply.png'equals = 'equals.png'

# 图片识别和点击的函数

def find_and_click(image):    x, y = pyautogui.locateCenterOnScreen(image, confidence=0.9)    pyautogui.click(x, y)

# 执行5*8=find_and_click(five)find_and_click(multiply)find_and_click(eight)find_and_click(equals)

代码以及图片的完整例子可以查看我的github,地址如下。

https://github.com/techstay/python-study/tree/master/pyautogui-sample

通过PyAutoGUI,你可以轻松的对图形界面进行自动化编程,按照屏幕位置或者图片识别来定位控件的位置,然后通过编程来控制鼠标和键盘输入。这和按键精灵的道理是一样的。但是Python可以利用广泛的第三方包来实现更多的功能,这一点是按键精灵无法相比的。

来源:

https://www.toutiao.com/a6827183521623179788/

“IT大咖说”欢迎广大技术人员投稿,投稿邮箱:aliang@itdks.com

来都来了,走啥走,留个言呗~

 IT大咖说  |  关于版权 

由“IT大咖说(ID:itdakashuo)”原创的文章,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请加微信:ITDKS10(备注:投稿),茉莉小姐姐会及时与您联系!

感谢您对IT大咖说的热心支持!

相关推荐

推荐文章

  • 编程语言的鄙视链

  • 一种无侵入比swagger-ui兼容性更好更简单的API文档生成方案

  • 神奇的C语言:一段令人百思不得其解的代码

  • Quarkus是Java的未来吗?

  • 【项目实践】后端接口统一规范的同时,如何优雅得扩展规范?

  • 深入理解Servlet

python opencv 界面按钮_PyAutoGUI:自动化键鼠操作的Python类库相关推荐

  1. python opencv 界面按钮_如何使用Python构建简单的UI?

    借助Streamlit框架,使用用户界面展示Python项目变得前所未有的简单,你可以仅仅使用Python代码来构建基于浏览器的UI.本次演示将为迷宫求解器程序构建UI.StreamlitStream ...

  2. Python的自动化键鼠

    基于 Python,实现自动化键鼠,用于简化机械的单点,双击,删除等交互操作,通过开线程方式增加扩展性并可随时中止程序. 使用以下的技术 pyautogui 自动化图形交互界面编程 threading ...

  3. Python 实现键鼠操作

    Python 实现键鼠操作 前言 需要的库 直接上代码 小结 前言 前几天玩的按键精灵由于版本太老,不兼容UTF8编码,就用python来封装了一些键鼠操作. 需要的库 time pyautogui ...

  4. 编写一个脚本,对至少三个以上记事本窗口做相同操作,对任意一个窗口进行手动操作,其余窗口由脚本执行相同步骤的键鼠操作,记得是键盘操作+鼠标操作。

    编写一个脚本,对至少三个以上记事本窗口做相同操作,对任意一个窗口进行手动操作,其余窗口由脚本执行相同步骤的键鼠操作,记得是键盘操作+鼠标操作.  按键等级认证5级 分享 答题思路: 对最上层记事本操作 ...

  5. Unity --- 基本键鼠操作

    1.我们对于键盘和鼠标的点击操作相当于在输入数据,这些输入的数据都会被存储到对应的数据缓存区中供程序读取和调用 而我们所谓的游戏程序中的键鼠操作其实就是当我们通过键盘输入了特定数据之后,游戏程序马上从 ...

  6. Python键鼠操作自动化库PyAutoGUI简介

    PyAutoGUI是一个Python语言的键鼠自动化库,简单来说和按键精灵的功能一样.但是因为是Python的类库,所以可以使用Python代码配合一些其他类库完成更加强大的功能.下面让我为大家介绍一 ...

  7. python自动化操作教程_Python键鼠操作自动化库PyAutoGUI简介

    PyAutoGUI是一个Python语言的键鼠自动化库,简单来说和按键精灵的功能一样.但是因为是Python的类库,所以可以使用Python代码配合一些其他类库完成更加强大的功能.下面让我为大家介绍一 ...

  8. python下拉菜单_python-web自动化:下拉列表操作

    非select/option元素: 1.触发下拉列表出现 2.等待下拉列表中的元素出现,然后进行选择元素即可. select/option元素: 下拉框操作-Select类 selenium提供Sel ...

  9. Python实现按键精灵(一)-键鼠操作

    需要安装 pywin32库 pip install pywin32 import win32api import time #鼠标移动 def mouse_move(x,y):win32api.Set ...

最新文章

  1. redis系列:基于redis的分布式锁
  2. 小端模式和大端模式_计算机字节顺序(大端法和小端法)详解
  3. 创建虚拟机并安装CentOS操作系统
  4. Linux操作系统下 NAND FLASH驱动程序框架
  5. 第一个通过HCIEv3.0的咱的学员
  6. 关于python编码的问题
  7. 已锁定计算机,计算机锁定怎么解除_计算机已锁定如何解除
  8. js ajax上传图片到服务器
  9. python笔记之序列(str的基本使用和常用操作)
  10. kallsyms 压缩_initrd.img、System.map学习札记
  11. python装饰器的顺序_python中装饰器的装饰顺序和执行顺序
  12. NOIP2016滚粗记
  13. 1次订单事故,扣了我3个月绩效!
  14. 【语音合成】基于matlab线性预测系数和基音参数语音合成【含Matlab源码 563期】
  15. 中文怎么设置 水晶报表 越南文_越南语到底是不是汉语的一门方言?为什么和粤语这么像?...
  16. BeyondDesk 桌面小工具集合/时钟日历黄历便签相框天气时间/托盘时钟 [开放代码]
  17. 如何在Java中将Excel(XLSX)转换为Word(DOCX)
  18. PHP是世界上最好的语言
  19. Linux入门三:安装CentOS 7(桌面版);
  20. SSL 3.0 Poodle漏洞修复方法——转

热门文章

  1. [转+总结]Linux虚拟系统安装VMware Tools总结
  2. 【ESP8266】NONOS SDK开发,串口发送、接收与中断
  3. 区块链系统之《基于区块链的PKI数字证书系统》
  4. 基于SEAL库实现PSI-报错实录1
  5. 设计模式--责任链(Responsibility_Chain)模式
  6. [architecture]-ARMV8的RAS Extension(Reliability、Availability、Serviceability)介绍
  7. select poll epoll IO操作多路复用及猴子补丁
  8. 判断程序是否处于调试状态
  9. 判断多个点在多边形内的在线算法
  10. linux route命令删除多余路由