以下是优化后的代码:\n\npython\nimport threading\nimport time\nimport pygetwindow\nimport pyautogui\nimport tkinter as tk\nfrom tkinter import messagebox\nimport subprocess\nimport os\n\n\nclass FiddlerApp:\n def __init__(self):\n self.window = tk.Tk()\n self.create_widgets()\n\n def create_widgets(self):\n self.window.title("Fiddler Classic GUI")\n label = tk.Label(self.window, text="Fiddler Classic GUI")\n label.pack(pady=10)\n\n self.path_var = tk.StringVar()\n path_label = tk.Label(self.window, text="请输入 Fiddler Classic 路径:")\n path_label.pack()\n path_entry = tk.Entry(self.window, textvariable=self.path_var)\n path_entry.pack(pady=5)\n\n self.running_flag = False\n\n start_button = tk.Button(self.window, text="启动 Fiddler Classic", command=self.start_fiddler)\n start_button.pack(pady=10)\n\n stop_button = tk.Button(self.window, text="停止 Fiddler Classic", command=self.stop_fiddler)\n stop_button.pack(pady=10)\n\n self.output_text = tk.Text(self.window)\n self.output_text.pack()\n\n def is_fiddler_window_active(self):\n try:\n active_window = pygetwindow.getActiveWindow()\n if active_window.title == "Progress Telerik Fiddler Classic":\n return True\n else:\n return False\n except Exception as e:\n print("获取窗口信息失败:", str(e))\n return False\n\n def open_fiddler(self):\n fiddler_path = self.path_var.get()\n if not os.path.exists(fiddler_path):\n self.output_text.insert(tk.END, "Fiddler Classic 路径不存在\n")\n return False\n\n subprocess.Popen(fiddler_path)\n\n for _ in range(10):\n if self.is_fiddler_window_active():\n self.output_text.insert(tk.END, "成功激活 Fiddler Classic\n")\n return True\n time.sleep(1)\n\n self.output_text.insert(tk.END, "启动 Fiddler Classic 失败\n")\n return False\n\n def simulate_shortcut(self):\n if self.is_fiddler_window_active():\n try:\n pyautogui.press("f12")\n self.output_text.insert(tk.END, "成功模拟按下 F12\n")\n except Exception as e:\n self.output_text.insert(tk.END, "模拟按键操作失败: " + str(e) + "\n")\n else:\n self.output_text.insert(tk.END, "当前不在 Fiddler Classic 窗口中\n")\n\n def start_fiddler(self):\n if self.running_flag:\n messagebox.showinfo("提示", "已经有 Fiddler Classic 启动中,请稍后再试!")\n return\n\n if not self.open_fiddler():\n messagebox.showerror("错误", "无法启动 Fiddler Classic,请检查路径是否正确!")\n return\n\n for _ in range(10):\n if self.is_fiddler_window_active():\n self.simulate_shortcut()\n break\n time.sleep(1)\n\n self.running_flag = True\n\n def stop_fiddler(self):\n self.running_flag = False\n\n def run(self):\n self.window.mainloop()\n\n\nif __name__ == "__main__":\n app = FiddlerApp()\n app.run()\n\n\n优化说明:\n1. 合并了两个类中的相同代码部分,简化了代码的重复性。\n2. 删除了无用的函数和全局变量。\n3. 将输出结果显示到界面上的文本框中,提供更友好的交互体验。\n4. 简化了按钮回调函数的逻辑,使代码更加简洁清晰。\n5. 优化了界面布局,去除了多余的窗口。\n6. 修复了部分代码缩进错误的问题。

优化 Python 代码:使用 Fiddler Classic GUI 自动化操作

原文地址: https://www.cveoy.top/t/topic/qg3P 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录