import hashlib
import random
import requests
import tkinter as tk
from tkinter import ttk, scrolledtext

# ===================== 请修改这里填入你的百度翻译密钥 =====================
APP_ID = "你的APPID"
APP_KEY = "你的密钥"
# ======================================================================

def baidu_translate(q, from_lang="auto", to_lang="zh"):
    """百度翻译接口"""
    url = "https://fanyi-api.baidu.com/api/v2/trans"
    salt = str(random.randint(32768, 65536))
    sign = hashlib.md5(f"{APP_ID}{q}{salt}{APP_KEY}".encode()).hexdigest()

    params = {
        "q": q,
        "from": from_lang,
        "to": to_lang,
        "appid": APP_ID,
        "salt": salt,
        "sign": sign
    }
    try:
        resp = requests.get(url, params=params)
        res = resp.json()
        if res.get("error_code"):
            return f"错误：{res['error_msg']}"
        return "\n".join([item["dst"] for item in res["trans_result"]])
    except Exception as e:
        return f"网络异常：{str(e)}"

def translate_action():
    """翻译按钮点击事件"""
    text = input_text.get("1.0", tk.END).strip()
    if not text:
        output_text.delete("1.0", tk.END)
        output_text.insert(tk.END, "请输入需要翻译的内容！")
        return
    f = lang_from.get()
    t = lang_to.get()
    result = baidu_translate(text, f, t)
    output_text.delete("1.0", tk.END)
    output_text.insert(tk.END, result)

# 构建窗口
win = tk.Tk()
win.title("Python翻译工具")
win.geometry("620x420")

# 语言选项
lang_list = [
    ("自动检测", "auto"),
    ("中文", "zh"),
    ("英语", "en"),
    ("日语", "jp"),
    ("韩语", "kor"),
    ("德语", "de"),
    ("法语", "fra")
]
lang_name = [x[0] for x in lang_list]
lang_code = {x[0]: x[1] for x in lang_list}

frame_top = ttk.Frame(win)
frame_top.pack(pady=8)

ttk.Label(frame_top, text="源语言：").grid(row=0, column=0)
lang_from = ttk.Combobox(frame_top, values=lang_name, width=10)
lang_from.set("自动检测")
lang_from.grid(row=0, column=1, padx=6)

ttk.Label(frame_top, text="目标语言：").grid(row=0, column=2)
lang_to = ttk.Combobox(frame_top, values=lang_name, width=10)
lang_to.set("中文")
lang_to.grid(row=0, column=3, padx=6)

btn_trans = ttk.Button(frame_top, text="开始翻译", command=translate_action)
btn_trans.grid(row=0, column=4, padx=10)

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

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

win.mainloop()