支持所有能点的东西,适用于游戏加属性自动点击,设置点击次数和间隔时间后,按f1或者点击界面按钮开始,暂停也可按f1。 import tkinter as tk from tkinter import ttk import pyautogui import threading import time class AutoClickerApp: def __init__(self, root): self.root = root self.root.title("千花鼠标连点器 v2.1") self.root.geometry("400x300")
self.setup_ui() self.running = False self.click_thread = None self.click_count = 0
# 热键绑定 self.root.bind('<F1>', lambda e: self.toggle_clicking()) self.root.bind('<Escape>', lambda e: self.stop_clicking()) def setup_ui(self): # 主框架 main_frame = ttk.Frame(self.root, padding=20) main_frame.pack(fill=tk.BOTH, expand=True)
# 点击设置 settings_frame = ttk.LabelFrame(main_frame, text="点击设置", padding=10) settings_frame.pack(fill=tk.X, pady=5)
# 点击次数 ttk.Label(settings_frame, text="点击次数 (0=无限):").grid(row=0, column=0, sticky=tk.W) self.count_entry = ttk.Entry(settings_frame, width=15) self.count_entry.grid(row=0, column=1, padx=5, pady=5) self.count_entry.insert(0, "100")
# 间隔时间 ttk.Label(settings_frame, text="间隔时间(秒):").grid(row=1, column=0, sticky=tk.W) self.interval_entry = ttk.Entry(settings_frame, width=15) self.interval_entry.grid(row=1, column=1, padx=5, pady=5) self.interval_entry.insert(0, "0.1")
# 状态显示 self.status_var = tk.StringVar() self.status_var.set("准备就绪 | 点击次数: 0") status_label = ttk.Label(main_frame, textvariable=self.status_var) status_label.pack(pady=10)
# 控制按钮 btn_frame = ttk.Frame(main_frame) btn_frame.pack(pady=5)
self.start_btn = ttk.Button(btn_frame, text="开始 (F1)", command=self.start_clicking) self.start_btn.pack(side=tk.LEFT, padx=5)
self.stop_btn = ttk.Button(btn_frame, text="停止 (ESC)", command=self.stop_clicking, state=tk.DISABLED) self.stop_btn.pack(side=tk.LEFT, padx=5) def toggle_clicking(self): if self.running: self.stop_clicking() else: self.start_clicking() def start_clicking(self): if self.running: return
try: count = int(self.count_entry.get()) interval = float(self.interval_entry.get()) if interval <= 0: raise ValueError("间隔时间必须大于0") except ValueError as e: self.status_var.set(f"错误: {str(e)}") return
self.running = True self.click_count = 0 self.update_status("运行中...")
self.start_btn.config(state=tk.DISABLED) self.stop_btn.config(state=tk.NORMAL)
self.click_thread = threading.Thread( target=self.click_loop, args=(count, interval), daemon=True ) self.click_thread.start() def click_loop(self, count, interval): while self.running and (count <= 0 or self.click_count < count): pyautogui.click() self.click_count += 1 self.root.after(0, self.update_counter) time.sleep(interval)
self.root.after(0, self.stop_clicking) def stop_clicking(self): self.running = False if self.click_thread and self.click_thread.is_alive(): self.click_thread.join()
self.update_status("已停止") self.start_btn.config(state=tk.NORMAL) self.stop_btn.config(state=tk.DISABLED) def update_counter(self): self.status_var.set(f"运行中 | 点击次数: {self.click_count}") def update_status(self, message): self.status_var.set(f"{message} | 点击次数: {self.click_count}") if __name__ == "__main__": root = tk.Tk() app = AutoClickerApp(root) root.mainloop() |