【python小工具--从0到1实现连点器功能】

2023-11-21 16:59

本文主要是介绍【python小工具--从0到1实现连点器功能】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

python 从0到1实现连点器功能

  • 前言
  • 准备工作
    • 环境搭建
      • python & vscode
  • 自己给自己提需求
  • 解决自己的需求
    • 创建可视化界面
    • 获取点击点
    • 设置点击时间间隔和点击次数
    • 连续点击
  • 测试

前言

由于需要干啥啥啥,需要用到连点器,找了找,都没有一款可以用的(其实就想自己搞),咱可不受这个气,没有俺可以自己造。想到了自己学过的python,是时候重新拾起来玩一玩了,这就开始做一款自己的连点器。根据我的思路,你也可以自己做一些自己的小玩意。

准备工作

环境搭建

python & vscode

这里的环境搭建就不细说了,可以自己找到很多的教程,跟着来就行,这里我用的是vscode,主要是习惯了,有感情了!

自己给自己提需求

在做之前,肯定要知道自己要做什么啊,在这里,我就想做一款连点器,那这个连点器应该要具备什么样的功能呢,接下来让我们一起思考。
首先,作为连点器,最基本的功能那当然是可以连续点击,好那我们的第一个需求就出现了:
1、可以连续点击屏幕
当然这也是最基本的功能,那么继续想一想,我们应该点击屏幕的哪一个地方呢,是不是可以让他点哪里就点哪里呢,在这里是不是就需要记录一个位置坐标呢,这也就是我们的第二个需求:
2、选取需要点击的坐标
这时,连点器的基本雏形已经完成了,那我们应该增加更多的功能,比如说我们点击的频率是多少呢?也就是说,每隔多久我们点击一次屏幕呢?我为我提出了自己的第三个需求:
3、可选择的点击频率
那么点击频率也有了,接下来也要有点击的次数,可以输入点击的次数来设定连点多少次,这也就是我为自己提的第四个需求:
4、可选择的点击次数
最后,要有一个可视化的界面去操作那再好不过了!
5、可视化的界面
基本的需求也就差不多了,接下来就可以根据自己的需求一步步的去实现他了!

解决自己的需求

需求已经知道的差不要多了,接下来就是要一个个的把他们干掉,开始编写代码。实现的顺序可能有所区别。

创建可视化界面

为了用户方便操作,可以设计一个简单的可视化界面。首先创建主窗口root和设置主题风格。
接下来创建GUI元素:
1、创建按钮–选择点击点

	select_point_button = ttk.Button(root, text="选择点击点", command=start_listening)select_point_button.pack(padx=20, pady=10)

2、创建下拉菜单–选择点击时间间隔

    interval_var = tk.StringVar()interval_var.set("1s")  #interval_label = ttk.Label(root, text="选择点击时间间隔:")interval_label.pack()interval_menu = ttk.Combobox(root, textvariable=interval_var, values=["10ms", "100ms", "1s"])interval_menu.pack()

3、创建输入框–输入点击次数

    click_count_label = ttk.Label(root, text="输入点击次数:")click_count_label.pack()click_count_entry = ttk.Entry(root)click_count_entry.pack()

4、创建按钮–开始模拟点击

    simulate_clicks_button = ttk.Button(root, text="开始模拟点击", command=simulate_continuous_clicks)simulate_clicks_button.pack(padx=20, pady=10)

5、创建记录信息的文本框

    info_text = tk.Text(root, height=5, width=40, state=tk.DISABLED)info_text.pack(padx=20, pady=10)

最后启动GUI循环,等待用户交互。

    root.mainloop()

界面效果图如下:
在这里插入图片描述

获取点击点

要想获取到鼠标或键盘,需要使用pynput库的Listener和KeyboardListener来监听鼠标点击事件和键盘事件。

with Listener(on_click=record_click_point) as listener, KeyboardListener(on_release=on_key_release) as keyboard_listener:

这行代码使用pynput库创建了两个监听器对象:listener和keyboard_listener,分别用于监听鼠标点击事件和键盘按键释放事件。这是一个上下文管理器(with语句),用于确保在进入和退出with块时正确地启动和停止监听器。
on_click=record_click_point告诉监听器在检测到鼠标点击事件时调用record_click_point函数。
当用户按下选择点击点的按钮时,就会启动监听鼠标点击事件

def start_listening():global listeninglistening = Truerecorded_info = "请点击屏幕上的一个点"info_text.config(state=tk.NORMAL)info_text.delete(1.0, tk.END)info_text.insert(tk.END, recorded_info)info_text.config(state=tk.DISABLED)

接下来就是实现record_click_point函数,记录下用户点击的坐标。

def record_click_point(x, y, button, pressed):global selected_point, point_selected, listeningif listening:if pressed:selected_point = (x, y)point_selected = Truerecorded_info = f"已选择点击点:{selected_point}"info_text.config(state=tk.NORMAL)info_text.delete(1.0, tk.END)info_text.insert(tk.END, recorded_info)info_text.config(state=tk.DISABLED)listening = False  # 停止监听

这个函数的作用是在用户点击鼠标并且正在监听鼠标事件的情况下,记录用户选择的点击点的坐标,并更新GUI界面中的文本框以显示已选择的点击点信息。一旦选择完成,函数会停止监听鼠标事件。

设置点击时间间隔和点击次数

一、获取点击时间间隔
根据用户在下拉菜单中选择的点击时间间隔来设置全局变量click_interval的值

def set_click_interval():global click_intervalselected_interval = interval_var.get()if selected_interval == "10ms":click_interval = 0.01elif selected_interval == "100ms":click_interval = 0.1elif selected_interval == "1s":click_interval = 1.0

这个函数的目的是根据用户的选择将点击时间间隔转换为浮点数表示的秒数,并将其存储在click_interval中,以便后续的点击操作可以使用这个时间间隔。用户在GUI中选择不同的时间间隔时,这个函数会根据选择来更新click_interval的值。这样,用户可以根据需要自定义点击的速度。
二、获取点击次数
根据用户在输入框中输入的点击次数来设置全局变量click_count的值,这里隐藏一个小彩蛋,输入特殊字段可以进行无限点击。

def set_click_count():global click_count, infinite_clicksinput_count = click_count_entry.get()if input_count.lower() == “手动马赛克":infinite_clicks = Trueelse:try:click_count = int(input_count)infinite_clicks = Falseexcept ValueError:recorded_info = "请输入有效的点击次数或 '手动马赛克' 进行无限次点击"info_text.config(state=tk.NORMAL)info_text.delete(1.0, tk.END)info_text.insert(tk.END, recorded_info)info_text.config(state=tk.DISABLED)return

这个函数的目的是根据用户的输入来设置全局变量click_count的值以及infinite_clicks标志的状态。如果用户输入了有效的整数,那么点击次数将被设置为该整数值,并且infinite_clicks标志将被设置为False,表示执行指定次数的点击操作。如果用户输入了特殊值"手动马赛克",则表示进行无限次点击。如果用户输入的不是有效的整数,将显示错误消息。

连续点击

在后台模拟点击操作,代码如下:

def simulate_clicks_background():global selected_point, clicking, infinite_clicksmouse = Controller()recorded_info = "正在进行点击"info_text.config(state=tk.NORMAL)info_text.delete(1.0, tk.END)info_text.insert(tk.END, recorded_info)info_text.config(state=tk.DISABLED)# 模拟连续点击选定的点if infinite_clicks:while clicking:mouse.position = selected_pointmouse.click(Button.left)time.sleep(click_interval)  # 等待指定的时间间隔else:for _ in range(click_count):if not clicking:break  # 用户按下了停止按钮,结束点击mouse.position = selected_pointmouse.click(Button.left)time.sleep(click_interval)  # 等待指定的时间间隔clicking = Falserecorded_info = "模拟点击完成"info_text.config(state=tk.NORMAL)info_text.delete(1.0, tk.END)info_text.insert(tk.END, recorded_info)info_text.config(state=tk.DISABLED)point_selected = False  # 重置选择的点击点状态

mouse = Controller() 这一行创建了一个pynput.mouse.Controller对象,用于模拟鼠标点击操作。
mouse.position = selected_point这一行将鼠标移动到用户选择的点击点(selected_point的坐标)。
mouse.click(Button.left)这一行模拟鼠标左键点击操作。
time.sleep(click_interval) 这一行使程序休眠(暂停执行)一段时间,等待指定的时间间隔click_interval。
这个函数的作用是在后台模拟鼠标点击操作,可以根据用户选择的模式执行无限次点击或执行指定次数的点击操作,并在完成后更新GUI界面中的文本框以显示相应的信息。

测试

一个简单的连点器就完成了,我已经迫不及待的想要去测试它的功能了。为了功能更加的完善,我也添加了停止点击的功能,虽然没有在之前详细的说,但相信细心的小伙伴已经发现了。好了,废话不多说,直接开测。不得不说视频审核时真的慢。

连点器测试视频

接下来可以愉快的玩耍了!

这篇关于【python小工具--从0到1实现连点器功能】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/a1379292747/article/details/132969512
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/403740

相关文章

golang中slice扩容的具体实现

《golang中slice扩容的具体实现》Go语言中的切片扩容机制是Go运行时的一个关键部分,它确保切片在动态增加元素时能够高效地管理内存,本文主要介绍了golang中slice扩容的具体实现,感兴趣... 目录1. 切片扩容的触发append 函数的实现2. runtime.growslice 函数gro

python进行while遍历的常见错误解析

《python进行while遍历的常见错误解析》在Python中选择合适的遍历方式需要综合考虑可读性、性能和具体需求,本文就来和大家讲解一下python中while遍历常见错误以及所有遍历方法的优缺点... 目录一、超出数组范围问题分析错误复现解决方法关键区别二、continue使用问题分析正确写法关键点三

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

Spring Boot 整合 Redis 实现数据缓存案例详解

《SpringBoot整合Redis实现数据缓存案例详解》Springboot缓存,默认使用的是ConcurrentMap的方式来实现的,然而我们在项目中并不会这么使用,本文介绍SpringB... 目录1.添加 Maven 依赖2.配置Redis属性3.创建 redisCacheManager4.使用Sp

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

Kali Linux安装实现教程(亲测有效)

《KaliLinux安装实现教程(亲测有效)》:本文主要介绍KaliLinux安装实现教程(亲测有效),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载二、安装总结一、下载1、点http://www.chinasem.cn击链接 Get Kali | Kal

C#使用MQTTnet实现服务端与客户端的通讯的示例

《C#使用MQTTnet实现服务端与客户端的通讯的示例》本文主要介绍了C#使用MQTTnet实现服务端与客户端的通讯的示例,包括协议特性、连接管理、QoS机制和安全策略,具有一定的参考价值,感兴趣的可... 目录一、MQTT 协议简介二、MQTT 协议核心特性三、MQTTNET 库的核心功能四、服务端(BR