当前位置: 首页 > news >正文

Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘

Python 有趣的模块之pynupt ——通过pynput控制鼠标和键盘

文章目录

  • Python 有趣的模块之pynupt ——通过pynput控制鼠标和键盘
    • 1️⃣简介
    • 2️⃣鼠标控制与移动
    • 3️⃣键盘控制与输入
    • 4️⃣结语📢

1️⃣简介

🚀🚀🚀学会控制鼠标和键盘是实现自动化的捷径!🚀🚀🚀

pynput是第三方库,所以在使用pynput之前需要下载pynput包。

  • 下载方式1:在终端输入pip install pynput下载包
  • 下载方式2:进入pypi官网:https://pypi.org➡️搜索pynput➡️选择版本➡️点击pip install pynput
  • 下载方式3:点击底部Python ackages➡️搜索pynput➡️点击Install

请添加图片描述




2️⃣鼠标控制与移动

⭐第一步:为了控制和模拟鼠标移动,所以需要从pynput中导入mouse模块。

from pynput import mouse 		# 导入mouse模块

⭐第二步:使用Controller()方法。

m = mouse.Controller()            # 创建一个鼠标

⭐第三步:移动鼠标在屏幕上的位置。

屏幕坐标以(0,0)为基准点位于屏幕的左上角,往右移动x轴坐标增加,往左移动x轴坐标减小。往下移动y轴坐标增加,往上移动y轴坐标减小。

可以使用print()打印鼠标的位置。

请添加图片描述
1.🍭绝对位置:

m.position = (800,600)           # 将鼠标移动到指定位置
print(f'鼠标位置为:{m.position}') # 打印鼠标位置

2.🍭相对位置:

m.move(100,100)					# 以(0,0)或上一个position的位置为准
print(f'鼠标位置为:{m.position}') #打印鼠标位置

第四步:模拟鼠标按键:

  1. 🍭单击左键:

📖方式一:

m.press(mouse.Button.left)          # 按下鼠标左键(单击)
m.release(mouse.Button.left)        # 松开鼠标左键

🌌补:使用press+position+release可实现拖拽功能

🌟注意:使用press按下后,必须要使用release松开。否则相对于现实中操作鼠标一直按下左键不松手

📖方式二:

m.click(mouse.Button.left, 1)         # 单击鼠标左键

🙌 区别:直接完成了一次点击松手操作。

  1. 🍭单击右键:

📖方式一:

m.press(mouse.Button.right)          # 按下鼠标右键(单击)
m.release(mouse.Button.right)        # 松开鼠标右键

📖方式二:

m.click(mouse.Button.right, 1)         # 单击鼠标右键
  1. 🍭双击:
m.click(mouse.Button.left, 2)         # 双击(左键)
  1. 🍭鼠标滚轮:

类似于上述将的position,x轴坐标增加往右移动,x轴坐标减小往左移动。y轴坐标增加往下移动,y轴坐标减小往上移动。

x轴使用较少,绝大部分页面不会出现左右滚动条。

m.scroll(0,2)                       # 向下移动

📘完整代码⬇️:

from pynput import mouse         # 导入mouse模块
m = mouse.Controller()           # 创建一个鼠标
m.position = (800,600)           # 将鼠标移动到指定位置
print(f'鼠标位置为:{m.position}')    # 打印鼠标位置
m.move(100,100)                     # 相对于(800,600)在移动(100,100)
print(f'鼠标位置为:{m.position}')    # 打印鼠标位置
# 方式一
# m.press(mouse.Button.left)          # 按下鼠标左键(单击)
# m.release(mouse.Button.left)        # 松开鼠标左键
# 方式二
m.click(mouse.Button.left, 1)         # 单击鼠标左键m.press(mouse.Button.right)          # 按下鼠标右键(单击)
m.release(mouse.Button.right)        # 松开鼠标右键
m.click(mouse.Button.right, 1)		 # 单击鼠标右键# 双击
m.click(mouse.Button.left, 2)         # 双击(左键)m.scroll(0,2)                       # x 左右滚动, y 上



3️⃣键盘控制与输入

⭐第一步:为了键盘输入,所以需要从pynput中导入keyboard模块。

from pynput import keyboard         # 导入keyboard模块

⭐第二步:使用Controller()方法。

k = keyboard.Controller()           # 创建一个键盘

⭐第三步:模拟按键

k.press('a')          # 按下a
k.release('a')        # 松开a

🌟注意:引号内可以是任意字符包括汉字,但只能是单个。后续会教大家输入一句话。

⭐第四步:按特殊键(空格,shift等)

k.press(keyboard.Key.space)         # 按下空格键
k.release(keyboard.Key.space)       # 松开空格键
k.press(keyboard.Key.shift)         # 按下shift键
k.release(keyboard.Key.shift)       # 松开shift键

⭐第五步:输入一句话

k.type('Hello everybody!')

📘完整代码⬇️:

from pynput import keyboard         # 导入keyboard模块
k = keyboard.Controller()           # 创建一个键盘k.press('a')          # 按下a
k.release('a')        # 松开ak.press(keyboard.Key.space)         # 按下空格键
k.release(keyboard.Key.space)       # 松开空格键
k.press(keyboard.Key.shift)         # 按下shift键
k.release(keyboard.Key.shift)       # 松开shift键k.type('Hello everybody!')



4️⃣结语📢

如果你学会了这些还不知道用pynput来干什么。那我教你可以实现打开应用,自动浏览网页,与女朋友微信聊天等。应用程序是无限的,你可以使用这种方法构建任何类型的自动化工具。

🎁打开软件代码分享:https://blink.csdn.net/details/1511416
🎁微信发送信息代码分享: https://blink.csdn.net/details/1511454




相关文章:

Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘

Python 有趣的模块之pynupt ——通过pynput控制鼠标和键盘 文章目录 Python 有趣的模块之pynupt ——通过pynput控制鼠标和键盘1️⃣简介2️⃣鼠标控制与移动3️⃣键盘控制与输入4️⃣结语📢 1️⃣简介 🚀🚀🚀学会控制鼠标和键盘是…...

docker基于centos7镜像安装python3.7.9

下载centos7镜像 docker pull centos:centos7 启动容器centos-python-3.7 docker run -itd --name centos-python-3.7 -p 60021:22 --privileged centos:centos7 /usr/sbin/init 进入容器 docker exec -it centos-python-3.7 /bin/bash centos7环境下安装python3.7.…...

JavaScript中的switch语句

switch语句和if语句一样,同样是运用于条件循环中; 下面例子我们用switch实现 例如如果今天是周一就学习HTML,周二学习CSS和JavaScript,周三学习vue,周四,周五学习node.js,周六周日快乐玩耍&…...

Jquery笔记

DOM对象通过jquery获取 所有的代码都是基于引入jquery.js文件 var mydiv $(#div);//直接获取到DOM对象元素id var mydiv$(.div);//通过class获取DOM对象,如果有同名class只会获取第一个 var mysapn$(span);//通过元素的标签名获取DOM对象 var divarr$(…...

【C++】优先级队列的基本概念以及其模拟实现

文章目录 补充知识:仿函数一、优先级队列:1.引入2.介绍 二、priority_queue的模拟实现1.大体框架2.私有成员函数:1.向下调整(AdjustDown)2.向上调整(AdjustUp) 3.公有成员函数1大小(…...

TextClamp for Vue3.0(Vue3.0的文本展开收起组件)

呦!大家好,好久没有更新博客了,最近实现了一个一直想自己完成的一个东西,就是文本的展开收起组件,以前项目需要用到,自己实现一个又太繁琐,所以那个时候都是用的别人的轮子,现在自己…...

区间预测 | MATLAB实现VAR向量自回归时间序列区间预测

区间预测 | MATLAB实现VAR向量自回归时间序列区间预测 目录 区间预测 | MATLAB实现VAR向量自回归时间序列区间预测预测效果基本介绍程序设计参考资料预测效果 基本介绍 区间预测 | MATLAB实现VAR向量自回归时间序列区间预测 VAR(Vector Autoregression)模型是一种广泛应用于时…...

在 Windows 上搭建 NTP 服务器

文章目录 一、基础环境二、适用场景三、操作步骤四、常用的NTP服务器五、参考资料 版权声明:本文为博主原创文章,于2023年7月30日首发于CSDN,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/u011046671 一、基础…...

应急响应经典案例-FTP 暴力破解

应急响应经典案例-FTP 暴力破解 应急场景日志分析应急处理措施 应急场景 从昨天开始,网站响应速度变得缓慢,网站服务器登录上去非常卡,重启服务器就能保证一段时间的正常访问,网站响应状态时而飞快时而缓慢,多数时间是…...

41. linux通过yum安装postgresql

文章目录 1.下载安装包2.关闭内置PostgreSQL模块:3.安装postgresql服务:4.初始化postgresql数据库:5.设置开机自启动:6.启动postgresql数据库7.查看postgresql进程8.通过netstat命令或者lsof 监听默认端口54329.使用find命令查找了一下postgresql.conf的配置位置10.修改postgre…...

SpringBoot启动流程及自动配置

SpringBoot启动流程源码: 1、启动SpringBoot启动类SpringbootdemoApplication中的main方法。 SpringBootApplication public class SpringbootdemoApplication {public static void main(String[] args) {SpringApplication.run(SpringbootdemoApplication.class, …...

【Linux】进程轻松入门

目录 一, 冯* 诺依曼体系结构 1,存储结构 ​编辑 二, 操作系统 1,概念 2,设计OS的目的 3,定位 4,如何理解 "管理" 5, 总结 三,进程 1. 概念 那么…...

【使用时空RBF-NN进行非线性系统识别】实现了 RBF、分数 RBF 和时空 RBF 神经网络,用于非线性系统识别研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Tomcat 安装配置教程及成功后,启动失败报错解决方案

解决方案 我的报错原因是因为我的JDK是1.8的而我的Tomcat是10版本的,可能是因为版本原因吧,我重新装了Tomcat 9就可以启动成功了! 简单说下安装的时候需要注意哪些步骤吧 今天我在安装tomcat10的时候,安装成功后,启…...

C#文件操作从入门到精通(2)——查看某个dll中有哪些函数

kernel32.dll中含有ini文件操作使用的函数,我们可以通过VisualStudio自带的dumpbin.exe查看dll所包含的函数,操作步骤如下: 1、找到dumpbin.exe所在的文件夹 我的电脑中安装了VisualStudio2019社区版以及VisualStudio2017Professional,但是我发现VisualStudio2019社区版中…...

二分查找算法(全网最详细代码演示)

二分查找也称 半查找(Binary Search),它时一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字 有序 排列。 注意:使用二分查找的前提是 该数组是有序的。 在实际开…...

draw up a plan

爱情是美好的,却不是唯一的。爱情只是属于个人化的感情。 推荐一篇关于爱情的美文: 在一个小镇上,有一家以制作精美巧克力而闻名的手工巧克力店,名叫“甜蜜之爱”。这家巧克力店是由一位名叫艾玛的年轻女性经营的,她对…...

抖音seo源码开发源代码开发技术分享

一、 抖音SEO源码开发,需要掌握以下技术: 抖音API接口:抖音提供了丰富的API接口,包括用户信息、视频信息、评论信息等。 数据爬取技术:通过抓包分析抖音接口的数据结构,可以使用Python等编程语言编写爬虫程…...

QEMU(Quick Emulator)

QEMU(Quick Emulator)是一款由法布里斯贝拉等人编写的免费的可执行硬件虚拟化的开源托管虚拟机。它可以通过动态的二进制转换模拟CPU,并提供一组设备模型,使它能够运行多种未修改的客户机OS。QEMU还可以为user-level的进程执行CPU…...

Gateway结合nacos(lb://xxx)无效问题

Gateway结合nacos无效 版本如下: com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2021.0.1.0 org.springframework.cloud:spring-cloud-starter-gateway:3.1.1 配置如下: server:port: 7000 spring:application:name: springCloudGa…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

django filter 统计数量 按属性去重

在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

零基础设计模式——行为型模式 - 责任链模式

第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

Python Einops库:深度学习中的张量操作革命

Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...