import tkinter as tk
from tkinter import ttk, scrolledtext, messagebox
import requests
import json

def translate_text():
    """执行翻译"""
    src_text = input_box.get("1.0", tk.END).strip()
    if not src_text:
        messagebox.showwarning("提示", "请输入需要翻译的内容！")
        return
    lang_map = {
        "中文": "zh",
        "英语": "en",
        "日语": "ja",
        "韩语": "ko"
    }
    target = lang_map[lang_combo.get()]
    url = "https://api.mrtz.org/fanyi"
    data = {
        "text": src_text,
        "to": target
    }
    try:
        resp = requests.post(url, data=data, timeout=10)
        res = resp.json()
        if res["code"] == 200:
            output_box.delete("1.0", tk.END)
            output_box.insert("1.0", res["data"])
        else:
            messagebox.showerror("翻译失败", res.get("msg", "接口异常"))
    except Exception as e:
        messagebox.showerror("网络错误", f"连接失败：{str(e)}")

def clear_all():
    """清空输入输出"""
    input_box.delete("1.0", tk.END)
    output_box.delete("1.0", tk.END)

# 创建主窗口
root = tk.Tk()
root.title("简易翻译软件")
root.geometry("650x480")
root.resizable(False, False)

# 输入区域
tk.Label(root, text="原文输入：", font=("微软雅黑", 11)).pack(anchor="w", padx=15, pady=(10,2))
input_box = scrolledtext.ScrolledText(root, width=78, height=9, font=("微软雅黑", 10))
input_box.pack(padx=15)

# 控制行：语言选择 + 按钮
frame = tk.Frame(root)
frame.pack(pady=10)

tk.Label(frame, text="翻译至：", font=("微软雅黑", 10)).grid(row=0, column=0)
lang_combo = ttk.Combobox(frame, values=["中文", "英语", "日语", "韩语"], width=10, font=("微软雅黑", 10))
lang_combo.current(1)
lang_combo.grid(row=0, column=1, padx=8)

tk.Button(frame, text="开始翻译", command=translate_text, width=10, bg="#409EFF", fg="white").grid(row=0, column=2, padx=5)
tk.Button(frame, text="清空文本", command=clear_all, width=10, bg="#909399", fg="white").grid(row=0, column=3, padx=5)

# 输出区域
tk.Label(root, text="翻译结果：", font=("微软雅黑", 11)).pack(anchor="w", padx=15, pady=(5,2))
output_box = scrolledtext.ScrolledText(root, width=78, height=9, font=("微软雅黑", 10))
output_box.pack(padx=15)

# 窗口循环
root.mainloop()