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

news2024/12/22 20:35:12

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 listening
    listening = True
    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)

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

def record_click_point(x, y, button, pressed):
    global selected_point, point_selected, listening
    if listening:
        if pressed:
            selected_point = (x, y)
            point_selected = True
            recorded_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_interval
    selected_interval = interval_var.get()
    if selected_interval == "10ms":
        click_interval = 0.01
    elif selected_interval == "100ms":
        click_interval = 0.1
    elif selected_interval == "1s":
        click_interval = 1.0

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

def set_click_count():
    global click_count, infinite_clicks
    input_count = click_count_entry.get()
    if input_count.lower() == “手动马赛克":
        infinite_clicks = True
    else:
        try:
            click_count = int(input_count)
            infinite_clicks = False
        except 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_clicks
    mouse = 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_point
            mouse.click(Button.left)
            time.sleep(click_interval)  # 等待指定的时间间隔
    else:
        for _ in range(click_count):
            if not clicking:
                break  # 用户按下了停止按钮,结束点击
            mouse.position = selected_point
            mouse.click(Button.left)
            time.sleep(click_interval)  # 等待指定的时间间隔
    clicking = False
    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)
    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界面中的文本框以显示相应的信息。

测试

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

连点器测试视频

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

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

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

相关文章

直播系统源码平台内容安全与版权维护技术:DRM

在数字化的时代,人们的生活中已深入到网络中来,许多人加入了直播系统源码平台中来,直播系统源码平台为用户们提供了一个发布图文短视频、开启直播、获取最新资讯的地方,这也衍生出了许多网红、主播等用户,他们会在直播…

E. Madoka and the Sixth-graders

Problem - E - Codeforces 思路:写这个题给我写破防了。。。 首先我们能够发现在一次迭代的过程中,所有入度为0的点都会变成空的,由大于n的几个数去填充,所以我们能够发现在一次迭代的过程中,新增的数的个数是固定的&…

高频因子(三)——高频微观结构:理想振幅因子

天软因子序列课程再次启动,本周四(9月21日)下午4点相约腾讯会议,可直接扫描下方二维码,欢迎大家参会! 本次会议主要内容有: 1.介绍理想振幅因子的构造逻辑,如何选择市场代理 变量对振…

人脸识别与神经风格转换

文章参考参考,在此基础上对人脸识别和神经风格转换的内容做一个简述。 人脸识别 模型构建 人脸识别仅仅用的表层特征做对比是远远不够的,这里用到的就是FaceNet的特征提取。由于FaceNet需要大量的数据以及长时间的训练,因此,遵循…

【面试经典150 | 双指针】盛最多水的容器

文章目录 写在前面Tag题目来源题目解读解题思路方法一:双指针 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内…

通过内网穿透实现文件共享,Python—行代码轻松实现公网访问

文章目录 1.前言2.本地文件服务器搭建2.1.python的安装和设置2.2.cpolar的安装和注册 3.本地文件服务器的发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 数据共享作为和连接作为互联网的基础应用,不仅在商业和办公场景有广泛的应用&#…

睿趣科技:抖音开店的操作流程有哪些

随着社交媒体的兴起,抖音已经成为了一款备受欢迎的短视频分享平台。许多人看到了在抖音上开店的商机,因此抖音开店也逐渐成为了一种新兴的商业模式。那么,抖音开店的操作流程究竟有哪些呢?下面将为您详细介绍。 第一步:选定产品和…

深入解析select、poll、epoll:Linux网络编程的三种IO模型

文章目录 IO模型的分类多路复用型IO的分类selectselect系统调用缺点 pollpoll系统调用缺点 epollepoll系统调用epoll模型优点LT模式与ET模式 IO模型的分类 大家都知道,一个完整的IO操作所花费的时间在计算机中是非常多的(速度非常慢)&#x…

Python定义一个接收3个列表的函数

class CustomFunction:def __getitem__(self, slices):slice1, slice2, slice3 slices# 在这里执行你的操作print("第一个切片:", slice1)print("第二个切片:", slice2)print("第三个切片:", slice3)# 创建一…

黄金代理是什么?和黄金平台有什么不同?

有现货黄金投资需求的朋友都知道,最近我们在网上能看到越来越多的黄金代理进行活动。这个现货黄金代理跟现货黄金投资,又有什么关系呢?投资者如何处理黄金代理与黄金投资以及黄金平台之间的关系呢? 黄金代理在现货黄金市场中类似证…

分享一个基于微信小程序的高校大学生心理咨询与测试小程序(源码lw调试)java+Python双版本

💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…

使用Cpolar 内网穿透工具,实现公网访问SeaFile搭建的私有云盘

文章目录 1. 前言2. SeaFile云盘设置2.1 Owncould的安装环境设置2.2 SeaFile下载安装2.3 SeaFile的配置 3. cpolar内网穿透3.1 Cpolar下载安装3.2 Cpolar的注册3.3 Cpolar云端设置3.4 Cpolar本地设置 4.公网访问测试5.结语 1. 前言 现在我们身边的只能设备越来越多&#xff0c…

情侣飞行棋 情侣小游戏 2023 抖音

飞行棋网站地址:https://effect.guoyaxue.top/fxq/index.html#/ 以及各种新版来袭: 以及各种情侣小游戏合集 https://fxnew.guoyaxue.top/#/

一文了解语音合成技术(TTS)

TTS是Text To Speech的缩写,即“从文本到语音”。 它将计算机自己产生的、或外部输入的文字信息转变为可以听得懂的、流利的汉语口语(或者其他语言语音)输出的技术,隶属于语音合成(SpeechSynthesis)。 语音…

【前端实习生备战秋招】—计算机网络面试题汇总,建议收藏系列

【前端实习生备战秋招】—计算机网络面试题汇总,建议收藏系列 一、HTTP协议 1. GET和POST的请求的区别 Post 和 Get 是 HTTP 请求的两种方法,其区别如下: 应用场景:GET 请求是一个幂等的请求,一般 Get 请求用于对服…

Linux软件包管理:yum和apt比较

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

elasticsearch16-聚合API

个人名片: 博主:酒徒ᝰ. 个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。 本篇励志:三人行,必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud…

多媒体隧道

多媒体隧道使压缩的视频数据能够通过硬件视频解码器直接传送到显示器,而无需通过应用程序代码或 Android 框架代码进行处理。 Android 堆栈下方的设备特定代码通过将视频帧呈现时间戳与以下类型的内部时钟之一进行比较来确定将哪些视频帧发送到显示器以及何时发送它…

郑州大学图书馆许少辉《乡村振兴战略下传统村落文化旅游设计》中文文献——2023学生开学季辉少许

郑州大学图书馆许少辉《乡村振兴战略下传统村落文化旅游设计》中文文献——2023学生开学季辉少许

MySQL 几种导数据的方法与遇到的问题

零、说在前面 MySQL导数据通常使用第三方工具和MySQL自身的工具,本文分别就这两类方法分别介绍。 一、第三方工具之 Navicat 1.1、Navicat的“数据传输”工具 打开Navicat,点击“工具”标签,找到“数据传输”,即可看到操作界面。…