from tkinter import *
from tkinter import ttk, messagebox

# 离线中英词库，可自行扩充单词
trans_dict = {
    "你好": "hello",
    "世界": "world",
    "早上好": "good morning",
    "晚上好": "good evening",
    "谢谢": "thank you",
    "再见": "goodbye",
    "朋友": "friend",
    "学校": "school",
    "电脑": "computer",
    "手机": "mobile phone",
    "water": "水",
    "book": "书本",
    "student": "学生",
    "teacher": "老师",
    "family": "家庭",
    "love": "爱",
    "happy": "开心的",
    "beautiful": "美丽的"
}

class TranslateApp:
    def __init__(self, root):
        self.root = root
        self.root.title("离线翻译工具")
        self.root.geometry("620x420")
        self.root.resizable(False, False)

        title_label = Label(root, text="Python离线翻译软件", font=("微软雅黑", 18, "bold"), fg="#2266cc")
        title_label.pack(pady=12)

        frame_select = Frame(root)
        frame_select.pack(pady=5)
        Label(frame_select, text="翻译方向：", font=("微软雅黑", 11)).grid(row=0, column=0, padx=5)
        self.lang_var = StringVar(value="中文 → 英文")
        lang_combo = ttk.Combobox(frame_select, textvariable=self.lang_var, width=16, font=("微软雅黑", 10), state="readonly")
        lang_combo["values"] = ["中文 → 英文", "英文 → 中文"]
        lang_combo.grid(row=0, column=1, padx=10)

        Label(root, text="待翻译文本：", font=("微软雅黑", 11), anchor="w").pack(fill="x", padx=30)
        self.input_text = Text(root, width=70, height=6, font=("微软雅黑", 10))
        self.input_text.pack(padx=30, pady=4)

        frame_btn = Frame(root)
        frame_btn.pack(pady=6)
        Button(frame_btn, text="开始翻译", command=self.do_translate, bg="#2185d0", fg="white", width=10, font=("微软雅黑", 10)).grid(row=0, column=0, padx=8)
        Button(frame_btn, text="清空输入", command=self.clear_input, bg="#f2711c", fg="white", width=10, font=("微软雅黑", 10)).grid(row=0, column=1, padx=8)
        Button(frame_btn, text="复制译文", command=self.copy_result, bg="#2db84d", fg="white", width=10, font=("微软雅黑", 10)).grid(row=0, column=2, padx=8)

        Label(root, text="翻译结果：", font=("微软雅黑", 11), anchor="w").pack(fill="x", padx=30)
        self.output_text = Text(root, width=70, height=6, font=("微软雅黑", 10), state=DISABLED)
        self.output_text.pack(padx=30, pady=4)

    def do_translate(self):
        content = self.input_text.get(1.0, END).strip()
        if not content:
            messagebox.showwarning("提示", "请输入需要翻译的内容！")
            return
        select = self.lang_var.get()
        if select == "中文 → 英文":
            res = trans_dict.get(content, "词库暂无该词汇")
        else:
            # 英翻中，反转字典
            reverse_dict = {v: k for k, v in trans_dict.items()}
            res = reverse_dict.get(content.lower(), "词库暂无该词汇")

        self.output_text.config(state=NORMAL)
        self.output_text.delete(1.0, END)
        self.output_text.insert(END, res)
        self.output_text.config(state=DISABLED)

    def clear_input(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)

    def copy_result(self):
        res_data = self.output_text.get(1.0, END).strip()
        if res_data and res_data != "词库暂无该词汇":
            self.root.clipboard_clear()
            self.root.clipboard_append(res_data)
            messagebox.showinfo("成功", "译文已复制到剪贴板！")
        else:
            messagebox.showinfo("提示", "无有效翻译内容")

if __name__ == "__main__":
    main_window = Tk()
    app = TranslateApp(main_window)
    main_window.mainloop()