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

写在前面

Python中有许多有趣和强大的模块,其中一个非常有趣的模块就是pynupt。pynupt是基于pynput模块的一个封装,用于控制鼠标和键盘。它可以实现自动化操作和游戏外挂等功能。

 

本文将详细介绍pynupt模块的使用方法和常见的功能。

1. 安装pynput模块

在开始使用pynupt之前,我们需要先安装pynput模块。可以使用以下命令进行安装:

pip install pynput
2. pynupt模块基本操作

pynupt提供了一些基本的操作鼠标和键盘的方法。下面是一个简单的示例,可以实现模拟按键和移动鼠标的功能:

import pynupt# 模拟按键
pynupt.press("a")  # 按下'a'键
pynupt.release("a")  # 释放'a'键# 移动鼠标
mouse = pynupt.Mouse()
mouse.move(100, 100)  # 移动到(100, 100)坐标

这个示例中,我们使用了pynupt的press和release方法来模拟按键操作,使用Mouse类的move方法来移动鼠标到指定位置。

3. pynupt模块高级操作

pynupt不仅支持基本的操作,还支持一些高级操作。下面我们将介绍一些常见的高级操作。

3.1 模拟按键组合

有时候我们需要模拟按键组合,比如Ctrl+C、Alt+Tab等。pynupt提供了一些方法来实现模拟按键组合。下面是一个示例,可以实现模拟Ctrl+C的功能:


import pynuptkeyboard = pynupt.Keyboard()
keyboard.press(pynupt.Key.ctrl)
keyboard.press('c')
keyboard.release('c')
keyboard.release(pynupt.Key.ctrl)

在这个示例中,我们使用Keyboard类的press和release方法模拟按下和释放Ctrl和C键,从而实现Ctrl+C的功能。

3.2 监听键盘和鼠标事件

pynupt还可以监听键盘和鼠标事件。我们可以使用Listener类来监听事件。下面是一个示例,可以监听键盘事件:

import pynuptdef on_press(key):try:print('按下键:{0}'.format(key.char))except AttributeError:print('按下键:{0}'.format(key))def on_release(key):print('释放键:{0}'.format(key))with pynupt.Listener(on_press=on_press, on_release=on_release) as listener:listener.join()

在这个示例中,我们定义了两个函数on_press和on_release来处理按下和释放键盘事件。然后使用Listener类来监听键盘事件,并将on_press和on_release函数作为参数传递给Listener类。最后使用join方法启动Listener类。

类似的,我们也可以监听鼠标事件。下面是一个示例,可以监听鼠标事件:

import pynuptdef on_move(x, y):print('移动到({0}, {1})'.format(x, y))def on_click(x, y, button, pressed):print('点击({0}, {1})的{2}键'.format(x, y, button))if not pressed:# 释放鼠标return Falsedef on_scroll(x, y, dx, dy):print('滚动({0}, {1})的({2}, {3})'.format(x, y, dx, dy))with pynupt.Listener(on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener:listener.join()

在这个示例中,我们定义了三个函数on_move、on_click和on_scroll来处理移动、点击和滚动鼠标事件。然后使用Listener类来监听鼠标事件,并将on_move、on_click和on_scroll函数作为参数传递给Listener类。最后使用join方法启动Listener类。

4. pynupt在自动化测试中的应用

pynupt可以在自动化测试中发挥重要的作用。我们可以使用pynupt来模拟用户输入、点击和移动等操作,从而对系统进行自动化测试。下面是一个示例,可以模拟用户在百度搜索输入框中输入关键字并点击搜索按钮:

import pynupt
import timedef input_and_search(keywords):keyboard = pynupt.Keyboard()mouse = pynupt.Mouse()mouse.move(500, 500)  # 将鼠标移动到屏幕中央mouse.click(pynupt.Button.left, 1)  # 点击左键打开浏览器time.sleep(3)  # 等待3秒钟,等待浏览器启动keyboard.type('www.baidu.com')  # 在地址栏中输入www.baidu.comkeyboard.press(pynupt.Key.enter)  # 按下回车键keyboard.release(pynupt.Key.enter)  # 释放回车键time.sleep(3)  # 等待3秒钟,等待页面加载完成mouse.move(500, 200)  # 将鼠标移动到搜索框mouse.click(pynupt.Button.left, 1)  # 点击搜索框keyboard.type(keywords)  # 在搜索框中输入关键字keyboard.press(pynupt.Key.enter)  # 按下回车键keyboard.release(pynupt.Key.enter)  # 释放回车键time.sleep(3)  # 等待3秒钟,等待搜索结果加载完成mouse.move(500, 300)  # 将鼠标移动到搜索按钮mouse.click(pynupt.Button.left, 1)  # 点击搜索按钮if __name__ == '__main__':input_and_search('pynput')

在这个示例中,我们定义了一个input_and_search函数,用于模拟用户在百度搜索输入框中输入关键字并点击搜索按钮。我们使用了pynupt的Keyboard类和Mouse类来模拟键盘和鼠标操作。最后在主函数中调用input_and_search函数,并传入关键字'pynput'来进行搜索。

总结

总之,pynupt是一个非常有趣的模块,它可以让我们通过编程来控制鼠标和键盘,让我们更加方便地进行各种操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/49128.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 14新增复制粘贴方式,解析工作原理

安卓14为用户提供了一种更简单的方式来在应用程序之间复制和粘贴内容,这肯定是你现在想在安卓14测试版或未来几个月该软件在你的安卓手机上推出时尝试的。 一旦更新在你的手机上(无论是测试版还是其他版本),你只需点击并按住你想…

【Python机器学习】实验14 手写体卷积神经网络

文章目录 LeNet-5网络结构(1)卷积层C1(2)池化层S1(3)卷积层C2(4)池化层S2(5)卷积层C3(6)线性层F1(7)线性层F2 …

小程序中的全局配置以及常用的配置项(window,tabBar)

全局配置文件和常用的配置项 app.json: pages:是一个数组,用于记录当前小程序所有页面的存放路径,可以通过它来创建页面 window:全局设置小程序窗口的外观(导航栏,背景,页面的主体) tabBar:设置小程序底部的 tabBar效果 style:是否…

MySQL不停重启问题

MySQL不停的自动杀掉自动重启 看一下log日志 my.cnf 里配置的 log_error /var/log/mysqld.log vim /var/log/mysqld.log 报的错误只是 [ERROR] Cant start server: Bind on TCP/IP port: Address already in use [ERROR] Do you already have another mysqld server …

基于大语言模型知识问答应用落地实践 – 知识库构建(上)

01 背景介绍 随着大语言模型效果明显提升,其相关的应用不断涌现呈现出越来越火爆的趋势。其中一种比较被广泛关注的技术路线是大语言模型(LLM)知识召回(Knowledge Retrieval)的方式,在私域知识问答方面可以…

屏蔽软件,一个技术出生的小企业老板的灵感

我是技术出生,今年开始也带团队了。虽然 人不多,但是有的时候 人在外面出差,不知道办公室的情况。这个时候为了企业的安全考虑,灵感上就想到了开发出一款能屏蔽软件的工具。杜绝掉一些危害公司的一些事。软件后端采用的是JAVA服务…

【用于全变分去噪的分裂布雷格曼方法】实施拆分布雷格曼方法进行总变异去噪研究(Matlab代码实现)

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

实现Token刷新机制

问题场景: 开发的项目中,如果正在项目中编辑信息,编辑信息的时间的过程中token失效可能导致信息丢失怎么办? 一、解决方法 实现Token刷新机制:客户端定时刷新token,当用户的token即将过期时,可以向服务器…

ForkJionPool线程池

分而治之 简单点说, 如果要处理的 1000 个数据 , 但是我们不具备处理1000 个数据的能力 , 可以只处理 10 个数据, 可以把这 1000 个数据分阶段处理 100 次 , 每次处理 10 个 , 把 100 次的处理结果进行合成, 形成最后这 1000 个数据的处理结果 . 把一个大任务调用 for…

5 Python的面向对象编程

概述 在上一节,我们介绍了Python的函数,包括:函数的定义、函数的调用、参数的传递、lambda函数等内容。在本节中,我们将介绍Python的面向对象编程。面向对象编程(Object-Oriented Programming, 即OOP)是一种…

系统架构设计师之缓存技术:Redis与Memcache能力比较

系统架构设计师之缓存技术:Redis与Memcache能力比较

OpenCV使用CMake和MinGW-w64的编译安装

OpenCV使用CMake和MinGW-w64的编译安装中的问题 问题:gcc: error: long: No such file or directory** C:\PROGRA~2\Dev-Cpp\MinGW64\bin\windres.exe: preprocessing failed. modules\core\CMakeFiles\opencv_core.dir\build.make:1420: recipe for target ‘modul…

Git如何操作本地分支仓库?

基本使用TortoiseGit 操作本地仓库(分支) 分支的概念 几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,避免影响开发主线。多线程开发,可以同时开启多个任务的开发,多个任务之间互不影响。 为何要…

无涯教程-PHP - 全局变量函数

全局变量 与局部变量相反,可以在程序的任何部分访问全局变量。通过将关键字 GLOBAL 放置在应被识别为全局变量的前面,可以很方便地实现这一目标。 <?php$somevar15;function addit() {GLOBAL $somevar;$somevar;print "Somevar is $somevar";}addit(); ?> …

Cohere API 之旅

Cohere API之旅 0. 背景1. Cohere提供的模型和函数2. Cohere 客户端3. Co.Generate API4. Co.Embed API5. Co.Classify API6. Co.Tokenize API7. Co.Detokenize API8. Co.Detect_language9. Co.Summarize API10. Co.Rerank API 0. 背景 大约两个月前有一份新闻稿。 https://w…

合并两个有序数组【leetcode】

1. 题目&#xff1a; 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 注意&#xff1a;最终&…

测试框架pytest教程(9)跳过测试skip和xfail

skip无条件跳过 使用装饰器 pytest.mark.skip(reason"no way of currently testing this") def test_example(faker):print("nihao")print(faker.words()) 方法内部调用 满足条件时跳过 def test_example():a1if a>0:pytest.skip("unsupported …

基于Redis的BitMap实现签到、连续签到统计(含源码)

微信公众号访问地址&#xff1a;基于Redis的BitMap实现签到、连续签到统计(含源码) 推荐文章&#xff1a; 1、springBoot对接kafka,批量、并发、异步获取消息,并动态、批量插入库表; 2、SpringBoot用线程池ThreadPoolTaskExecutor异步处理百万级数据; 3、基于Redis的Geo实现附…

python小脚本——批量将PDF文件转换成图片

语言&#xff1a;python 3 用法&#xff1a;选择PDF文件所在的目录&#xff0c;点击 确定 后&#xff0c;自动将该目录下的所有PDF转换成单个图片&#xff0c;图片名称为: pdf文件名.page_序号.jpg 如运行中报错&#xff0c;需要自行根据报错内容按照缺失的库 例如&#x…

ORB-SLAM系列算法演进

ORB-SLAM算法是特征点法的代表&#xff0c;当前最新发展的ORB-SLAM3已经将相机模型抽象化&#xff0c;适用范围非常广&#xff0c;虽然ORB-SLAM在算法上的创新并不是很丰富&#xff0c;但是它在工程上的创新确实让人耳目一新&#xff0c;也能更好的为AR、机器人的算法实现落地。…