#coding=utf-8
from tkinter import *
import urllib.request
import urllib.parse
import socket
import json
def translate():
value = entry1.get();
if value != "":
result = get_translate_result(value);
else:
result = "";
v2.set(result);
def get_translate_result(words):
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=dict.top";
data = get_data(words);
html = url_open(url, data);
result = get_json_data(html);
return result;
def get_data(words):
data = {}
data["type"] = "AUTO";
data["i"] = words;
data["doctype"] = "json";
data["xmlVersion"] = "1.8";
data["keyfrom:fanyi"] = "web";
data["ue"] = "UTF-8";
data["action"] = "FY_BY_CLICKBUTTON";
data["typoResult"] = "true";
data = urllib.parse.urlencode(data).encode('utf-8');
return data;
def url_open(url, data):
req = urllib.request.Request(url, data);
req.add_header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36");
response = urllib.request.urlopen(req);
html = response.read();
html = html.decode("utf-8");
return html;
def get_json_data(html):
result = json.loads(html);
result = result['translateResult'];
result = result[0][0]['tgt'];
return result;
if __name__ == '__main__':
root =Tk();
root.title("中英互译");
#控制窗口的高宽
root.minsize(350,150);
root.maxsize(350,150);
###grid布局###
#使用Frame增加一层容器
fm1 = Frame(root);
fm1.grid(row=0, column=0, padx=10, pady=15);
Label1 = Label(fm1,text="输入要翻译的文字:");
Label1.grid(row=0, column=0, sticky=E, pady=5);
Label2 = Label(fm1,text="翻译之后的结果:");
Label2.grid(row=1, column=0, sticky=E);
v1 = StringVar();
entry1 = Entry(fm1, textvariable=v1, width=30);
entry1.grid(row=0, column=1, columnspan=2, sticky=W);
v2 = StringVar();
entry2 = Entry(fm1, textvariable=v2, width=30, state="readonly");
entry2.grid(row=1, column=1, columnspan=2, sticky=W);
#使用Frame增加一层容器
fm2 = Frame(root);
fm2.grid(row=1, column=0, padx=10, pady=5);
button1 = Button(fm2,text="翻译",width=10,command=translate);
button1.grid(row=0, column=0, sticky=E, padx=20);
button2 = Button(fm2,text="退出",width=10,command=root.destroy);
button2.grid(row=0, column=1, sticky=W);
root.mainloop();
初次编写,欢迎提意见。