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

# 翻译函数
def translate_text():
    # 获取输入内容
    content = input_text.get("1.0", tk.END).strip()
    if not content:
        return
    
    # 获取选择的语言
    from_lang = from_lang_var.get()
    to_lang = to_lang_var.get()
    
    try:
        # 创建翻译器
        translator = Translator(from_lang=from_lang, to_lang=to_lang)
        # 执行翻译
        result = translator.translate(content)
        # 显示结果
        output_text.delete("1.0", tk.END)
        output_text.insert(tk.END, result)
    except Exception as e:
        output_text.delete("1.0", tk.END)
        output_text.insert(tk.END, f"翻译失败：{str(e)}")

# 清空函数
def clear_text():
    input_text.delete("1.0", tk.END)
    output_text.delete("1.0", tk.END)

# ------------------- 主界面 -------------------
root = tk.Tk()
root.title("Python 翻译软件")
root.geometry("650x450")  # 窗口大小
root.resizable(False, False)

# 语言选择框架
lang_frame = ttk.Frame(root)
lang_frame.pack(pady=10)

from_lang_var = tk.StringVar(value="zh")
to_lang_var = tk.StringVar(value="en")

ttk.Label(lang_frame, text="源语言：").grid(row=0, column=0, padx=5)
from_combo = ttk.Combobox(lang_frame, textvariable=from_lang_var, values=["zh", "en"], width=8)
from_combo.grid(row=0, column=1, padx=5)

ttk.Label(lang_frame, text="目标语言：").grid(row=0, column=2, padx=5)
to_combo = ttk.Combobox(lang_frame, textvariable=to_lang_var, values=["en", "zh"], width=8)
to_combo.grid(row=0, column=3, padx=5)

# 输入框
ttk.Label(root, text="输入文本：").pack(anchor="w", padx=10)
input_text = scrolledtext.ScrolledText(root, width=70, height=8)
input_text.pack(padx=10, pady=5, fill=tk.BOTH)

# 按钮
btn_frame = ttk.Frame(root)
btn_frame.pack(pady=5)

translate_btn = ttk.Button(btn_frame, text="翻译", command=translate_text)
translate_btn.grid(row=0, column=0, padx=10)

clear_btn = ttk.Button(btn_frame, text="清空", command=clear_text)
clear_btn.grid(row=0, column=1, padx=10)

# 输出框
ttk.Label(root, text="翻译结果：").pack(anchor="w", padx=10)
output_text = scrolledtext.ScrolledText(root, width=70, height=8)
output_text.pack(padx=10, pady=5, fill=tk.BOTH)

# 运行主循环
root.mainloop()