#实现模拟有道翻译#coding:utf-8
from tkinter import *
importrequests#有道翻译
classYouDao:def __init__(self):pass
deffanyi(self, content):#translate_o改成translate,可防止返回:{'errorCode': 50}
#url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'headers={'referer': 'http://fanyi.youdao.com/','user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 OPR/65.0.3467.78 (Edition Baidu)'}
data={'i': content,'from': 'AUTO','to': 'AUTO','smartresult': 'dict','client': 'fanyideskweb','salt': '15791434983359','sign': '4c3ba7ac1aefe25a7e0f6780c3f08512','ts': '1579143498335','bv': '120ea3adb00787750fbc44dd1af54b88','doctype': 'json','version': '2.1','keyfrom': 'fanyi.web','action': 'FY_BY_REALTlME',
}
res= requests.post(url, headers=headers, data=data)if res.status_code == 200:
result=res.json()if 'translateResult' inresult:return result['translateResult'][0][0]['tgt']else:returnresultelse:return '请求失败'
#界面
classApplication:def __init__(self):
self.youdao=YouDao()#创建窗口对象
self.window =Tk()#窗口对象的标题
self.window.title(u'我的程序')#设置窗口的大小和位置(宽:310,高:370,坐标:500,300)
self.window.geometry("310x370+500+300")
self.window.minsize(310,370)
self.window.maxsize(310,370)#创建一个文本框
#self.text1 = Text(self.window, background='azure')
self.text1 = Text(self.window, background='#ccc', foreground='black')
self.text1.place(x=10, y=5, width=290, height=165) #设置位置坐标和大小
self.text1.bind('', self.text1_event) #绑定键盘回车键事件
#创建提示标题
self.label1 = Label(self.window, text=u'翻译结果:')
self.label1.place(x=10, y=175)#创建按钮
self.btn1 = Button(self.window, text='翻译', command=self.btn1_event)
self.btn1.place(x=220, y=175, width=35, height=25)
self.btn2= Button(self.window, text='清空', command=self.btn2_event)
self.btn2.place(x=263, y=175, width=35, height=25)#创建结果文本框
self.text2 = Text(self.window, background='black', foreground='white')
self.text2.place(x=10, y=205, width=290, height=165)#text1 监听回车事件
deftext1_event(self, event):#获取用户输入的值
content = self.text1.get(0.0, END).strip().replace('\n', ' ')print(content)#进行翻译
result =self.youdao.fanyi(content)#填写结果到结果输入框
self.text2.delete(0.0, END)
self.text2.insert(END, result)#btn1 翻译事件
defbtn1_event(self):#获取用户输入的值
content = self.text1.get(0.0, END).strip().replace('\n', ' ')print(content)#进行翻译
result =self.youdao.fanyi(content)#填写结果到结果输入框
self.text2.delete(0.0, END)
self.text2.insert(END, result)#btn2 清空事件
defbtn2_event(self):#清空文本框的内容
self.text1.delete(0.0, END)
self.text2.delete(0.0, END)defrun(self):#进入循环
self.window.mainloop()if __name__ == '__main__':
app=Application()
app.run()