使用 python pyautogui实现鼠标键盘控制功能
作者:luhao19980909 发布时间:2023-11-17 07:01:41
pyautogui是一个可以控制鼠标和键盘的python库,类似的还有pywin32。
pyautogui的安装
pip3 install python3-xlib
依赖库 sudo apt-get install scrot
依赖库 pip3 install pyautogui
python3下安装pyautogui库 import pyautogui
引入该库
pyautogui的方法保护措施
为了防止pyautogui夺取了鼠标的控制权导致我们无法关掉该程序,它提供了一个保护措施,即把鼠标移到最左上角,此时程序报错退出;
默认FAILSAFE=True,保护模式开启
FAILSAFE = False
关闭保护措施
获取屏幕信息
size()
获取当前屏幕的分辨率,如(1920,1080)二元组
注意:屏幕左上角是原点(0,0),整个屏幕相当于第一象限
position()
获取鼠标当前坐标
onScreen(x,y)
判断点(x,y)是否在屏幕范围内,如负值一定返回False
移动鼠标
moveTo(x,y,duration=0.25)
用0.25s的时间将鼠标移到(x,y)位置 moveRel(x,y,duration=0.25)
以鼠标所在位置为原点,将鼠标移动到(x,y)处
下面代码,让鼠标在指定位置绕一个正方形转动10圈
import pyautogui
for i in range(10):
pyautogui.moveTo(300, 300, duration=0.25)
pyautogui.moveTo(400, 300, duration=0.25)
pyautogui.moveTo(400, 400, duration=0.25)
pyautogui.moveTo(300, 400, duration=0.25)
下面代码,让鼠标绕当前位置绕正方形转10圈
import pyautogui
for i in range(10):
pyautogui.moveRel(100, 0, duration=0.25)
pyautogui.moveRel(0, 100, duration=0.25)
pyautogui.moveRel(-100, 0, duration=0.25)
pyautogui.moveRel(0, -100, duration=0.25)
鼠标事件
点击鼠标
click(x, y, button='left', click=3, interval=0.5)
button有3个选项:left,middle,right,不加则默认点击鼠标左键click表示单击次数interval表示每次单击之间的时间间隔click()函数实际由mouseDown()和mouseUp()组成,即按下和松开;
pyautogui.doubleClick()
鼠标双击,其实就是执行两次click()函数。 pyautogui.rightClick()
右击 pyautogui.middleClick()
中击
鼠标滚轮
scroll(200)
控制鼠标的滚轮,正值上滚,负值下滚
拖拽鼠标
dragTo()
dragRel()
按下鼠标,并拖拽到指定位置,用法同moveTo(),moveRel()窗口截图处理、寻找目标按钮截图功能
im = screenshot( region=(x,y,width,heigth) )
截取以(x,y)为左上角且指定宽高的区域,不加参数,默认截取整个屏幕
im.getpixel( (x,y) )
获取指定位置的像素,是一个三元组(注意输入格式) pixelMatchesColor(x,y,(R,G,B))
判断(x,y)处的像素是否等于RGB im.save('xx.png')
保存为x.png
寻找按钮
locateOnscreen('xx.png')
寻找屏幕中和xx.png一样的图标位置,是一个四元组 click( center( locateOnscreen('xx.png') ) )
点击该图标的中心,center用来获取图标中心点的坐标
比如把网易云音乐的应用存为music.png,上述就执行自动点击网易云的图标
总结
以上所述是小编给大家介绍的python中的pyautogui实现鼠标键盘控制功能,希望对大家有所帮助.
来源:https://blog.csdn.net/luhao19980909/article/details/90614288


猜你喜欢
- vue通信方式有很多,项目中用的比较多的的有 pros、vuex、$emit/$on 这3种,还有 provide/in
- 今天使用pip安装第三库时,有时会报错:pip._vendor.urllib3.exceptions.ReadTimeoutError: H
- 本文实例讲述了python实现美团订单推送到测试环境,提供便利操作。分享给大家供大家参考,具体如下:背景: 有时候需要在测试环境下一个美团的
- 本文实例讲述了Python使用logging模块实现打印log到指定文件的方法。分享给大家供大家参考,具体如下:可能我们经常会使用print
- Python使用贪婪算法解决问题集合覆盖问题假设你办了个广播节目,要让全美50个州的听众都收听到。为此,你需要决定在哪些广播台播出。在每个广
- import socketimport Queueimport threadingdef worker(): &nbs
- 先发官方文档的地址:官方文档学习使用的书籍是Python网络数据采集(Ryan Mitchell著),大约是一些笔记的整理。Beautifu
- 1.简介 EXCEPT和INTERSECT运算符使您可以比较两个或多个SELECT语句的结果并返回非重复值。 2.区别 EXCEPT运算符返
- 1.需要导的包import pymysql2.# mysql连接信息(字典形式)db_config ={ 'host': &
- 问题你想使用一个简单的REST接口通过网络远程控制或访问你的应用程序,但是你又不想自己去安装一个完整的web框架。解决方案构建一个REST风
- startswith()方法Python startswith() 方法用于检查字符串是否是以指定子字符串开头如果是则返回 True,否则返
- 目录现象根因分析getLastPacketReceivedTimeMs()方法调用时机解决方案现象应用升级MySQL驱动8.0后,在并发量较
- 本文实例讲述了PHP读取txt文本文件并分页显示的方法。分享给大家供大家参考。具体实现方法如下:<?php &n
- 因为要写个东西用到,所以百度了一下,居然有朋友乱写,而且比较多,都没有认真测试过,只对字符可以,但是对数字就不可以,而且通用性很差,需要修改
- 如果电脑是第一次安装MySQL,一般不会出现这样的报错。如下图所示。starting the server失败,通常是因为上次安装的该软件未
- 迭代器模式迭代器模式(Iterator Pattern)是一种常用的设计模式,用于遍历集合中的元素,不暴露集合的内部结构。迭代器模式将集合和
- python中同样使用关键字class创建一个类,类名称第一个字母大写,可以带括号也可以不带括号;python中实例化类不需要使用关键字ne
- 1.安装vscode和python3.7(安装路径在:E:\Python\Python37);2.打开vscode,在左下角点击设置图标选择
- 刚刚想从数据库中的表EXPERT_DETAILS中检索出修改人Modifier(类型 VARCHAR2(20),可为空)为空的那些记录,因为
- 实现对下一个单词的预测RNN 原理自己找,这里只给出简单例子的实现代码import tensorflow as tfimport numpy