PyQT5 键盘模拟/鼠标连点器的实现

近来在玩一个游戏,找不到合适的鼠标连点器,不是有广告就是功能太复杂,自己写了一个,分享出来,如果有需要的可以自行运行研究。

准备工作

Python版本:Python 3.12.3;运行前确保pyQT5已经安装:

pip install PyQt5

程序运行界面:
在这里插入图片描述在这里插入图片描述

程序代码:

通过引入单独的常量和变量文件,并为每个元素增加中文注释来实现界面语句、变量和常量的统一规划。代码:

常量定义文件(constants.py)

# constants.py
# 常量定义文件,用于统一管理系统中的常量# 界面文本常量
WINDOW_TITLE = "模拟器"  # 窗口标题# 按键模拟标签
KEY_TAB_TITLE = "按键模拟"
KEY_INTERVAL_LABEL = "按键间隔(秒):"
KEY_TYPE_LABEL = "按键类型:"
KEY_LABEL = "按键:"
KEY_COUNT_LABEL = "按键次数 (适用于多次按键类型):"
KEY_LOG_LABEL = "按键日志:"# 鼠标模拟标签
MOUSE_TAB_TITLE = "鼠标模拟"
CLICK_INTERVAL_LABEL = "点击间隔(秒):"
CLICK_TYPE_LABEL = "点击类型:"
CLICK_COUNT_LABEL = "点击次数 (适用于多次点击类型):"
MOUSE_POSITION_LABEL = "鼠标位置:"
MOUSE_LOG_LABEL = "鼠标日志:"# 按钮标签
START_KEY_BUTTON = "开始 (F10)"
STOP_KEY_BUTTON = "停止 (F11)"
START_MOUSE_BUTTON = "开始 (F9)"
STOP_MOUSE_BUTTON = "停止 (F12)"# 错误消息
ERROR_MESSAGE = "错误: "

变量定义文件(variables.py)

# variables.py
# 变量定义文件,用于统一管理系统中的变量# 系统状态变量
pressing = False  # 按键模拟状态
clicking = False  # 鼠标模拟状态
mouse_position = None  # 鼠标当前位置

主程序文件(main.py)

# main.py
# 主程序文件,包含程序的主要逻辑import sys
import ctypes
import threading
import time
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QLabel, QLineEdit, QTabWidget, QComboBox, QTextEdit, QDoubleSpinBox, QSpinBox, QGridLayout
from PyQt5.QtCore import Qt
import keyboard
from pynput import keyboard as pynput_keyboard, mouse as pynput_mouseimport constants  # 导入常量定义文件
import variables  # 导入变量定义文件class KeyMouseSimulator(QMainWindow):def __init__(self):super().__init__()self.setup_ui()self.bind_hotkeys()def setup_ui(self):self.setWindowTitle(constants.WINDOW_TITLE)  # 设置窗口标题tab_widget = QTabWidget(self)self.setCentralWidget(tab_widget)self.key_tab = QWidget()self.mouse_tab = QWidget()tab_widget.addTab(self.key_tab, constants.KEY_TAB_TITLE)  # 设置按键模拟标签tab_widget.addTab(self.mouse_tab, constants.MOUSE_TAB_TITLE)  # 设置鼠标模拟标签self.setup_key_tab()self.setup_mouse_tab()def setup_key_tab(self):layout = QGridLayout(self.key_tab)layout.addWidget(QLabel(constants.KEY_INTERVAL_LABEL), 0, 0)  # 按键间隔标签self.key_interval = QDoubleSpinBox()self.key_interval.setValue(0.1)layout.addWidget(self.key_interval, 0, 1)layout.addWidget(QLabel(constants.KEY_TYPE_LABEL), 1, 0)  # 按键类型标签self

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

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

相关文章

智能计算系统-概述

1、人工智能技术分层 2、人工智能方向人才培养 3、课程体系的建议 4、智能系统课程对学生的价值 5、智能计算系统对老师的价值 6、什么是智能计算系统 7、智能计算系统的形态 8、智能计算系统具有重大价值 9、智能计算系统的三大困难 10、开创深度学习处理器方向 11、寒武纪的国…

MySQL监控和日志管理:故障排查与性能分析

一、MySQL监控 一、监控工具介绍 MySQL自带了一些非常有用的监控工具。例如"SHOW STATUS"命令,它可以显示MySQL服务器的当前状态。此外,还有"SHOW PROCESSLIST"命令,它可以显示当前正在运行的进程。 另外,还有许多强大的第三方工具可供选择: **Percon…

用一个ESP32S3-Zero把有线键盘变为无线

三脚猫最近一直琢磨,那些喜欢买剪线键盘,以及自制键盘瞎折腾的人都是怎么搞的。经过不懈努力,终于想明白除了直接的硬件一个个pin针的高低电压判断后转给蓝牙,拿到现成的古董剪线键盘还有一个方式其实是在usb host转发给蓝牙类似这…

北斗三代一体式数传终端短报文

北斗三代一体式数传终端短报文M20C-V30针对船载通信和导航应用推出的一款支持北斗 RDSS/RNSS 功能的船载一体机。北斗数传终端内部集成了北斗多频天线、射频、基带以及主控等功能单元,可实现 RDSS 定位、短报文通信和 RNSS 导航定位等功能。M20C-V30型北斗数传终端体…

Java线程池的抛弃策略

Java线程池的抛弃策略 Java线程池是Java并发编程中非常重要的一个组件。它通过重用已创建的线程来减少线程创建和销毁的开销,从而提高应用程序的性能和响应速度。然而,当线程池中的任务数量超过其处理能力时,就需要一种机制来处理新提交的任…

Vue3 中 props 与 emit 用法

在 Vue3 中,props 和 emit 的用法有所改变,主要的变化在于它们现在都通过 setup 函数来访问和使用。 props: props 用于父组件向子组件传递数据。在 setup 函数中,props 是一个参数,我们可以通过它访问到父组件传入的所有 prop 值…

datax的安装及使用入门

1 下载解压Datax tar包 下载到自己指定的安装目录 #wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz 进行解压 tar -zxvf datax.tar.gz 2 Datax验证 #修改datax/bin目录下datax.py的权限 chmod 777 datax/bin/datax.py 2.1运行官方给定的任务…

【Pandas驯化-03】Pandas中常用统计函数mean、count、std、info使用

【Pandas驯化-03】Pandas中常用统计函数mean、count、std、info使用 本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! 🎇 相关内容文档获取 微…

[Bug]使用gradio创建应用提示AttributeError: module ‘gradio‘ has no attribute ‘inputs‘

源代码 import gradio as gr gr.Interface(fnpredict, inputsgr.inputs.Image(shape(512, 512)), outputsgr.outputs.Label(num_top_classes3) ).launch(shareTrue) 错误 ------------------------------------------------------…

力扣1818.绝对差值和

力扣1818.绝对差值和 把nums1拷贝复制一份 去重排序 对于每个nums2都找到差距最小的那个数(二分) 作差求最大可优化差值去重排序可以直接用set 自动去重排序了 const int N 1e97;class Solution {public:int minAbsoluteSumDiff(vector<int>& nums1, vector<i…

springboot集成shardingsphere-分库分表

导入maven依赖&#xff0c;如下 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><a…

MyBatis 参数传递详解

MyBatis 是一个强大的持久层框架&#xff0c;支持多种方式将参数传递给 SQL 语句&#xff0c;以实现数据库操作。在使用 MyBatis 进行开发时&#xff0c;正确理解和使用参数传递机制对于构建高效、可维护的应用至关重要。本文将详细介绍 MyBatis 中常见的参数传递方式及其使用场…

哈工大-公差基础-配合(互换性和测量基础)-3

基轴制的情况&#xff1a; 三种配合类别的选择&#xff1a; 公差带是由标准公差和基本偏差组成的。 公差带的选用&#xff1a; 未注公差的标准&#xff1a; 练习&#xff1a; 计算过程&#xff1a;

【DevOps】Logstash详解:高效日志管理与分析工具

在现代软件开发和运维过程中&#xff0c;日志管理与分析是至关重要的环节。日志可以帮助我们追踪系统行为、诊断问题、优化性能以及确保安全合规。Logstash&#xff0c;作为ELK Stack&#xff08;Elasticsearch、Logstash、Kibana&#xff09;的核心组件之一&#xff0c;是一个…

【MySQL】在CentOS环境下安装MySQL

目录 一、卸载残留环境 二、获取官方yum源 三、安装yum源 四、安装MySQL 五、启动MySQL 一、卸载残留环境 输入 ps axj | grep mysql 查看是否存在正在运行的MySQL服务 如果有&#xff0c;则先输入 systemctl stop mysqld 来关闭服务 然后输入 rpm -qa | grep mysql 查看…

Python中的实用缓存机制实现

Python中的实用缓存机制实现 一、引言 在软件开发中&#xff0c;缓存是一个重要的优化手段&#xff0c;它可以显著提高程序的性能。尤其是在处理大量数据或者频繁访问相同数据时&#xff0c;通过缓存可以避免重复计算或数据库查询&#xff0c;从而大幅减少响应时间。Python作…

【数据结构陈越版笔记】2.1 引子【第2章 数据结构实现基础】

2.1 引子 数据结构的处理方法是从具体应用中抽象出共性的数据组织与操作方法&#xff0c;进而采用某种具体的程序涉及语言实现相应的数据存储与操作。 【例】给日常处理的数据进行统计分析 类型名称&#xff1a;统计数据集 数据对象集&#xff1a;N个元素 { x 1 , x 2 , . . .…

报错 Cannot read properties of undefined(reading‘addEventListener‘)如何解决

我在制作项目中遇到了一个问题&#xff0c;给大家分享一下&#xff0c;如下图&#xff1a; 问题&#xff1a;这是我给一个input输入框绑定的监听事件出现的报错 翻译&#xff1a;无法读取未定义的属性(读取 addEventListener ) 错误原因&#xff1a;js中操作的dom元素的函数方…

KL散度(Kullback-Leibler divergence)

K L KL KL散度&#xff08; K u l l b a c k − L e i b l e r d i v e r g e n c e Kullback-Leibler\ divergence Kullback−Leibler divergence&#xff09;&#xff0c;也被称为相对熵、互熵或鉴别信息&#xff0c;是用来衡量两个概率分布之间的差异性的度量方法。以下是对…

在vscode中调试,命令行出现错误信息ModuleNotFoundError: No module named ‘imp‘

在vscode中调试&#xff0c;命令行出现错误信息ModuleNotFoundError: No module named ‘imp’ 报错原因 VSCode的python扩展会使用debugpy库实现调试功能。在涉及qt组件加载时&#xff0c;debugpy的qt_loaders.py会尝试加载imp库。而在python3.12及以后的版本中&#xff0c;…