连点器py
import tkinter as tk
from tkinter import ttk, messagebox
import pyautogui
import threading
import time
import os
class AutoClicker:
def __init__(self, root):
self.root = root
self.root.title("智能连点器")
self.root.geometry("400x300")
self.root.resizable(False, False)
# 设置中文字体
self.style = ttk.Style()
self.style.configure("TLabel", font=("SimHei", 10))
self.style.configure("TButton", font=("SimHei", 10))
self.style.configure("TEntry", font=("SimHei", 10))
# 连点参数
self.click_count = tk.IntVar(value=10)
self.interval = tk.DoubleVar(value=0.5)
self.running = False
self.paused = False
self.current_clicks = 0
# 创建界面
self.create_widgets()
def create_widgets(self):
# 输入框架
input_frame = ttk.Frame(self.root, padding="20")
input_frame.pack(fill=tk.BOTH, expand=True)
# 点击次数
ttk.Label(input_frame, text="点击次数:").grid(row=0, column=0, sticky=tk.W, pady=5)
ttk.Entry(input_frame, textvariable=self.click_count, width=10).grid(row=0, column=1, sticky=tk.W, pady=5)
# 间隔时间(秒)
ttk.Label(input_frame, text="间隔时间(秒):").grid(row=1, column=0, sticky=tk.W, pady=5)
ttk.Entry(input_frame, textvariable=self.interval, width=10).grid(row=1, column=1, sticky=tk.W, pady=5)
# 状态标签
self.status_label = ttk.Label(input_frame, text="就绪,请设置参数并点击开始", foreground="blue")
self.status_label.grid(row=2, column=0, columnspan=2, pady=10)
# 按钮框架
button_frame = ttk.Frame(self.root, padding="0 20")
button_frame.pack(fill=tk.X)
# 开始按钮
self.start_btn = ttk.Button(button_frame, text="开始", command=self.start_clicking)
self.start_btn.pack(side=tk.LEFT, padx=20, expand=True, fill=tk.X)
# 暂停/继续按钮
self.pause_btn = ttk.Button(button_frame, text="暂停", command=self.toggle_pause, state=tk.DISABLED)
self.pause_btn.pack(side=tk.LEFT, padx=20, expand=True, fill=tk.X)
# 停止按钮
self.stop_btn = ttk.Button(button_frame, text="停止", command=self.stop_clicking, state=tk.DISABLED)
self.stop_btn.pack(side=tk.LEFT, padx=20, expand=True, fill=tk.X)
# 提示标签
ttk.Label(self.root, text="提示: 开始后3秒自动开始点击鼠标当前位置",
font=("SimHei", 9), foreground="gray").pack(side=tk.BOTTOM, pady=10)
def start_clicking(self):
# 验证输入
try:
count = self.click_count.get()
interval = self.interval.get()
if count <= 0 or interval <= 0:
messagebox.showerror("输入错误", "请输入有效的次数和间隔时间(必须为正数)")
return
except:
messagebox.showerror("输入错误", "请输入有效的数字")
return
# 更新状态和按钮
self.running = True
self.paused = False
self.current_clicks = 0
self.start_btn.config(state=tk.DISABLED)
self.pause_btn.config(state=tk.NORMAL)
self.stop_btn.config(state=tk.NORMAL)
# 启动连点线程
threading.Thread(target=self.clicker_thread, daemon=True).start()
def clicker_thread(self):
# 3秒倒计时
for i in range(3, 0, -1):
if not self.running:
return
self.status_label.config(text=f"即将开始,倒计时: {i}秒", foreground="orange")
time.sleep(1)
# 开始连点
self.status_label.config(text=f"正在点击: 0/{self.click_count.get()}", foreground="green")
while self.running and self.current_clicks < self.click_count.get():
if not self.paused:
# 点击当前鼠标位置
pyautogui.click()
self.current_clicks += 1
self.status_label.config(text=f"正在点击: {self.current_clicks}/{self.click_count.get()}", foreground="green")
# 等待间隔时间
time.sleep(self.interval.get())
else:
# 如果暂停,短暂休眠以减少CPU占用
time.sleep(0.1)
# 完成或停止
if self.current_clicks >= self.click_count.get():
self.status_label.config(text="点击完成", foreground="purple")
else:
self.status_label.config(text="已停止", foreground="red")
# 重置按钮状态
self.running = False
self.start_btn.config(state=tk.NORMAL)
self.pause_btn.config(state=tk.DISABLED)
self.stop_btn.config(state=tk.DISABLED)
def toggle_pause(self):
if self.paused:
# 继续
self.paused = False
self.pause_btn.config(text="暂停")
self.status_label.config(text=f"继续点击: {self.current_clicks}/{self.click_count.get()}", foreground="green")
else:
# 暂停
self.paused = True
self.pause_btn.config(text="继续")
self.status_label.config(text=f"已暂停: {self.current_clicks}/{self.click_count.get()}", foreground="orange")
def stop_clicking(self):
self.running = False
self.paused = False
if __name__ == "__main__":
# 确保中文显示正常
root = tk.Tk()
app = AutoClicker(root)
root.mainloop()
可以用来水完大学第一课
收录于知乎专栏「临时剪切板/垃圾箱/素材/有部分意义文本」· 查看知乎原文