自动购买.py 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. import tkinter as tk
  2. from tkinter import ttk, scrolledtext, messagebox, filedialog
  3. from datetime import datetime
  4. class NewToolGUI:
  5. def __init__(self, root):
  6. self.root = root
  7. self.root.title("新工具 - 批量购买平台")
  8. self.root.geometry("900x950")
  9. self.root.resizable(False, False)
  10. # 设置样式
  11. style = ttk.Style()
  12. style.configure("TLabel", font=("微软雅黑", 10))
  13. style.configure("TButton", font=("微软雅黑", 10))
  14. style.configure("TEntry", font=("微软雅黑", 10))
  15. # 主框架
  16. main_frame = ttk.Frame(root, padding="20 20 20 20")
  17. main_frame.pack(fill=tk.BOTH, expand=True)
  18. # ========== 代理设置 ==========
  19. proxy_frame = ttk.LabelFrame(main_frame, text="代理设置", padding="10 10 10 10")
  20. proxy_frame.pack(fill=tk.X, pady=(0, 15))
  21. ttk.Label(proxy_frame, text="代理提取链接:").grid(row=0, column=0, sticky=tk.W, pady=5)
  22. self.proxy_url_var = tk.StringVar(value="")
  23. proxy_url_entry = ttk.Entry(proxy_frame, textvariable=self.proxy_url_var, width=50)
  24. proxy_url_entry.grid(row=0, column=1, sticky=tk.W, padx=(10, 0), pady=5)
  25. ttk.Label(proxy_frame, text="代理更换间隔(秒):").grid(row=1, column=0, sticky=tk.W, pady=5)
  26. self.proxy_interval_var = tk.StringVar(value="60")
  27. proxy_interval_entry = ttk.Entry(proxy_frame, textvariable=self.proxy_interval_var, width=10)
  28. proxy_interval_entry.grid(row=1, column=1, sticky=tk.W, padx=(10, 0), pady=5)
  29. # 代理状态显示
  30. self.proxy_status = ttk.Label(proxy_frame, text="代理状态: 未启用", font=("微软雅黑", 9), foreground="gray")
  31. self.proxy_status.grid(row=2, column=0, columnspan=2, sticky=tk.W, pady=(5, 0))
  32. # ========== 账号列表 ==========
  33. account_frame = ttk.LabelFrame(main_frame, text="账号列表 (每行一个账号,格式:邮箱 | 密码)", padding="10 10 10 10")
  34. account_frame.pack(fill=tk.X, pady=(0, 15))
  35. self.account_list_text = tk.Text(account_frame, height=6, font=("Consolas", 9), wrap=tk.WORD)
  36. self.account_list_text.pack(fill=tk.X)
  37. # 示例占位内容
  38. self.account_list_text.insert(tk.END, "example1@mail.com | password123\n")
  39. self.account_list_text.insert(tk.END, "example2@mail.com | password456\n")
  40. # ========== 购买参数 ==========
  41. purchase_frame = ttk.LabelFrame(main_frame, text="购买参数", padding="10 10 10 10")
  42. purchase_frame.pack(fill=tk.X, pady=(0, 15))
  43. # 游戏购买地址
  44. ttk.Label(purchase_frame, text="游戏购买地址:").grid(row=0, column=0, sticky=tk.W, pady=5)
  45. self.game_url_var = tk.StringVar(value="")
  46. game_url_entry = ttk.Entry(purchase_frame, textvariable=self.game_url_var, width=60)
  47. game_url_entry.grid(row=0, column=1, columnspan=2, sticky=tk.W, padx=(10, 0), pady=5)
  48. # 购买数量
  49. ttk.Label(purchase_frame, text="购买数量:").grid(row=1, column=0, sticky=tk.W, pady=5)
  50. self.quantity_var = tk.StringVar(value="1")
  51. quantity_entry = ttk.Entry(purchase_frame, textvariable=self.quantity_var, width=10)
  52. quantity_entry.grid(row=1, column=1, sticky=tk.W, padx=(10, 0), pady=5)
  53. # 游戏优惠券代码
  54. ttk.Label(purchase_frame, text="游戏优惠券代码:").grid(row=2, column=0, sticky=tk.W, pady=5)
  55. self.coupon_var = tk.StringVar(value="")
  56. coupon_entry = ttk.Entry(purchase_frame, textvariable=self.coupon_var, width=30)
  57. coupon_entry.grid(row=2, column=1, sticky=tk.W, padx=(10, 0), pady=5)
  58. # ========== 操作按钮 ==========
  59. button_frame = ttk.Frame(main_frame)
  60. button_frame.pack(fill=tk.X, pady=(0, 15))
  61. self.start_btn = ttk.Button(button_frame, text="开始批量购买", command=self.start_purchase, width=18)
  62. self.start_btn.pack(side=tk.LEFT, padx=(0, 10))
  63. self.stop_btn = ttk.Button(button_frame, text="停止", command=self.stop_purchase, width=15, state="disabled")
  64. self.stop_btn.pack(side=tk.LEFT, padx=(0, 10))
  65. clear_btn = ttk.Button(button_frame, text="清空日志", command=self.clear_log, width=15)
  66. clear_btn.pack(side=tk.LEFT, padx=(10, 0))
  67. # ========== 进度状态 ==========
  68. status_frame = ttk.LabelFrame(main_frame, text="执行状态", padding="10 10 10 10")
  69. status_frame.pack(fill=tk.X, pady=(0, 15))
  70. self.status_label = ttk.Label(status_frame, text="就绪", font=("微软雅黑", 10))
  71. self.status_label.pack(anchor=tk.W)
  72. self.progress_var = tk.StringVar(value="0%")
  73. progress_frame = ttk.Frame(status_frame)
  74. progress_frame.pack(anchor=tk.W, pady=(5, 0))
  75. self.progress_label = ttk.Label(progress_frame, text="进度:", font=("微软雅黑", 9))
  76. self.progress_label.pack(side=tk.LEFT)
  77. self.progress_bar = ttk.Label(progress_frame, textvariable=self.progress_var, font=("微软雅黑", 9), foreground="blue")
  78. self.progress_bar.pack(side=tk.LEFT, padx=(5, 0))
  79. # ========== 日志输出 ==========
  80. result_frame = ttk.LabelFrame(main_frame, text="日志输出", padding="10 10 10 10")
  81. result_frame.pack(fill=tk.BOTH, expand=True)
  82. self.result_text = scrolledtext.ScrolledText(
  83. result_frame,
  84. wrap=tk.WORD,
  85. font=("Consolas", 9),
  86. height=15
  87. )
  88. self.result_text.pack(fill=tk.BOTH, expand=True)
  89. # 日志颜色标签
  90. self.result_text.tag_config("timestamp", foreground="gray")
  91. self.result_text.tag_config("info", foreground="black")
  92. self.result_text.tag_config("success", foreground="green")
  93. self.result_text.tag_config("error", foreground="red")
  94. self.result_text.tag_config("warning", foreground="orange")
  95. self.result_text.tag_config("debug", foreground="purple")
  96. # ========== 以下是占位方法,不实现实际功能 ==========
  97. def start_purchase(self):
  98. """占位:开始批量购买"""
  99. messagebox.showinfo("提示", "这是界面演示,未实现实际功能。")
  100. def stop_purchase(self):
  101. """占位:停止购买"""
  102. messagebox.showinfo("提示", "这是界面演示,未实现实际功能。")
  103. def clear_log(self):
  104. """清空日志"""
  105. self.result_text.delete(1.0, tk.END)
  106. self.status_label.config(text="已清空日志", foreground="gray")
  107. if __name__ == "__main__":
  108. root = tk.Tk()
  109. app = NewToolGUI(root)
  110. root.mainloop()