工具分享03 | Python屏幕点击抢票工具,告别拼手速时代

大家好,我是欧K~

本期使用Python的Tkinter制作屏幕点击抢票工具,可用于自动抢单、抢票、订票、点赞等。希望对大家有所帮助,如有疑问或者需要改进的地方可以联系小编。

往期分享:

1. 运行流程

1.1 工具面板

1.2 获取当前位置

点击后有5秒的时间将鼠标移动到屏幕上抢票按钮的位置。

1.3 开始点击

1.4 停止点击或者按下 ESC 键

1.5 点击结束

1.6 使用说明

2. 绘图

2.1 框架结构布局

def create_parameter_section(self):
        """创建参数设置区域"""
        param_frame = ttk.LabelFrame(self.main_frame, text="点击参数设置", style="Bold.TLabelframe")
        param_frame.grid(row=1, column=0, sticky="ew", pady=(0, 10))

        # 配置列权重
        param_frame.columnconfigure(0, weight=1, minsize=130)
        param_frame.columnconfigure(1, weight=2, minsize=200)
        param_frame.columnconfigure(2, weight=1, minsize=130)

        # 当前位置行
        ttk.Label(param_frame, text="点击位置:", anchor="w").grid(
            row=0, column=0, padx=(15, 5), pady=8, sticky="w"
        )
        self.position_var = tk.StringVar(value="尚未获取位置")
        position_label = ttk.Label(
            param_frame,
            textvariable=self.position_var,
            font=('Microsoft YaHei', 9),
            width=25,
            anchor="w",
        )
        position_label.grid(row=0, column=1, padx=5, pady=8, sticky="w")

        # 获取位置按钮
        position_button = ttk.Button(
            param_frame,
            text="获取当前位置",
            style="Orange.TButton",
            command=self.get_current_position
        )
        position_button.grid(row=0, column=2, padx=(0, 15), pady=8, sticky="e")

2.2 添加菜单

def create_menu(self):
        """创建菜单系统"""
        menu_bar = tk.Menu(self.root)

        # 创建"文件"菜单
        file_menu = tk.Menu(menu_bar, tearoff=0)
        file_menu.add_command(label="退出", command=self.on_close)
        menu_bar.add_cascade(label="文件", menu=file_menu)

        # 创建"帮助"菜单
        help_menu = tk.Menu(menu_bar, tearoff=0)
        help_menu.add_command(label="联系作者", command=self.about_command)
        help_menu.add_command(label="使用说明", command=self.show_help)
        menu_bar.add_cascade(label="帮助", menu=help_menu)

        self.root.config(menu=menu_bar)

2.3 获取位置倒计时

def get_current_position(self):
        """获取当前鼠标位置"""

        def update_position():
            self.status_var.set("请在5秒内将鼠标移动到目标位置...")
            self.root.update()

            # 显示倒计时
            for i in range(5, 0, -1):
                self.status_var.set(f"倒计时: {i}秒...")
                self.root.update()
                time.sleep(1)

            # 获取位置
            self.x, self.y = pyautogui.position()
            self.position_var.set(f"坐标:({self.x}, {self.y})")
            self.status_var.set(f"成功设置位置: ({self.x}, {self.y})")

2.4 参数校验

def validate_inputs(self):
        """验证所有输入参数是否有效"""
        try:
            if self.x == -1or self.y == -1:
                messagebox.showerror("设置错误", "请先设置点击位置")
                returnFalse

            duration = float(self.duration_var.get())

            if duration <= 0:
                messagebox.showerror("输入错误", "持续时间必须大于0")
                returnFalse

            if duration > 600: # 限制最大时间为10分钟
                ifnot messagebox.askyesno("确认", "设置时间超过10分钟,是否继续?"):
                    returnFalse

            returnTrue
        except ValueError:
            messagebox.showerror("输入错误", "请输入有效的数字")
            return False

3. 获取工具

公众号后台回复:工具03