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

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

def baidu_translate(query, from_lang="auto", to_lang="zh"):
    url = "https://fanyi-api.baidu.com/api/v2/trans"
    salt = str(random.randint(32768, 65536))
    sign = hashlib.md5((APP_ID + query + salt + APP_KEY).encode()).hexdigest()
    data = {
        "q": query,
        "from": from_lang,
        "to": to_lang,
        "appid": APP_ID,
        "salt": salt,
        "sign": sign
    }
    try:
        resp = requests.post(url, data=data, timeout=8)
        res_json = resp.json()
        if "trans_result" in res_json:
            return res_json["trans_result"][0]["dst"]
        else:
            return f"错误：{res_json.get('error_msg','翻译失败')}"
    except Exception as e:
        return f"网络异常：{str(e)}"

def do_translate():
    input_text = input_box.get("1.0", tk.END).strip()
    if not input_text:
        output_box.delete("1.0", tk.END)
        output_box.insert(tk.END, "请输入需要翻译的文本！")
        return
    # 判断翻译方向
    select = lang_combo.get()
    if select == "中文 → 英文":
        result = baidu_translate(input_text, from_lang="zh", to_lang="en")
    elif select == "英文 → 中文":
        result = baidu_translate(input_text, from_lang="en", to_lang="zh")
    else:
        result = baidu_translate(input_text, from_lang="auto", to_lang="zh")
    output_box.delete("1.0", tk.END)
    output_box.insert(tk.END, result)

def clear_text():
    input_box.delete("1.0", tk.END)
    output_box.delete("1.0", tk.END)

# 构建窗口
root = tk.Tk()
root.title("Python翻译工具")
root.geometry("620x460")
root.resizable(False, False)

# 翻译选择下拉框
lang_combo = ttk.Combobox(root, width=20)
lang_combo["values"] = ["自动检测→中文", "中文 → 英文", "英文 → 中文"]
lang_combo.current(0)
lang_combo.pack(pady=8)

tk.Label(root, text="输入文本：").pack(anchor="w", padx=20)
input_box = scrolledtext.ScrolledText(root, width=72, height=8)
input_box.pack(padx=20)

frame_btn = tk.Frame(root)
frame_btn.pack(pady=10)
tk.Button(frame_btn, text="开始翻译", width=12, command=do_translate, bg="#348ede", fg="white").grid(row=0, column=0, padx=10)
tk.Button(frame_btn, text="清空", width=12, command=clear_text, bg="#dd4444", fg="white").grid(row=0, column=1, padx=10)

tk.Label(root, text="翻译结果：").pack(anchor="w", padx=20)
output_box = scrolledtext.ScrolledText(root, width=72, height=8)
output_box.pack(padx=20)

root.mainloop()