import tkinter as tk
from tkinter import ttk, scrolledtext, messagebox
from translate import Translator

class TranslatorApp:
    def __init__(self, root):
        self.root = root
        self.root.title("Python 极简翻译器")
        self.root.geometry("600x500")
        self.root.minsize(400, 300)

        # 1. 顶部语言选择区
        lang_frame = ttk.Frame(root, padding=10)
        lang_frame.pack(fill="x")

        ttk.Label(lang_frame, text="源语言:").grid(row=0, column=0, padx=5)
        self.src_lang = ttk.Combobox(lang_frame, values=["中文", "英语", "日语", "韩语", "法语"], width=10)
        self.src_lang.grid(row=0, column=1, padx=5)
        self.src_lang.set("中文")

        ttk.Label(lang_frame, text="目标语言:").grid(row=0, column=2, padx=5)
        self.dest_lang = ttk.Combobox(lang_frame, values=["英语", "中文", "日语", "韩语", "法语"], width=10)
        self.dest_lang.grid(row=0, column=3, padx=5)
        self.dest_lang.set("英语")

        # 2. 文本输入与输出区
        text_frame = ttk.Frame(root, padding=10)
        text_frame.pack(fill="both", expand=True)

        ttk.Label(text_frame, text="原文:").pack(anchor="w")
        self.input_text = scrolledtext.ScrolledText(text_frame, height=8, font=("Arial", 12))
        self.input_text.pack(fill="both", expand=True, pady=(0, 10))

        ttk.Label(text_frame, text="译文:").pack(anchor="w")
        self.output_text = scrolledtext.ScrolledText(text_frame, height=8, font=("Arial", 12), state="disabled")
        self.output_text.pack(fill="both", expand=True)

        # 3. 底部按钮区
        btn_frame = ttk.Frame(root, padding=10)
        btn_frame.pack(fill="x")

        ttk.Button(btn_frame, text="🔄 开始翻译", command=self.translate_text).pack(side="right", padx=5)
        ttk.Button(btn_frame, text="🗑️ 清空", command=self.clear_text).pack(side="right", padx=5)

    def translate_text(self):
        """执行翻译逻辑"""
        original = self.input_text.get("1.0", "end-1c").strip()
        if not original:
            messagebox.showwarning("提示", "请先输入要翻译的文本！")
            return

        # 简单的语言映射字典
        lang_map = {"中文": "zh", "英语": "en", "日语": "ja", "韩语": "ko", "法语": "fr"}
        src = lang_map.get(self.src_lang.get(), "zh")
        dest = lang_map.get(self.dest_lang.get(), "en")

        try:
            translator = Translator(from_lang=src, to_lang=dest)
            result = translator.translate(original)

            # 将结果写入输出框
            self.output_text.config(state="normal")
            self.output_text.delete("1.0", "end")
            self.output_text.insert("1.0", result)
            self.output_text.config(state="disabled")
        except Exception as e:
            messagebox.showerror("翻译失败", f"发生错误: {str(e)}\n请检查网络连接或稍后重试。")

    def clear_text(self):
        """清空输入和输出框"""
        self.input_text.delete("1.0", "end")
        self.output_text.config(state="normal")
        self.output_text.delete("1.0", "end")
        self.output_text.config(state="disabled")

if __name__ == "__main__":
    root = tk.Tk()
    app = TranslatorApp(root)
    root.mainloop()