|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
编了个自动在线翻译的翻译器(借鉴原本的TK有道翻译器,做了点修改,主要是练习为目的),省去了手动点翻译的麻烦。每3秒自动检测翻译。
但是程序好像还有个bug,就是当内容为空的时候,会报错。看看有什么好的解决方法。
自动翻译器
- import urllib.request
- import urllib.parse
- import json
- import tkinter as tk
- root = tk.Tk()
- root.title('自动有道翻译器')
- text1 = ' '
- text2 = ' '
- def translate(sentence=' '):
- if sentence != None:
- url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null'
- data = {
- "type" : "AUTO",
- "i" : sentence,
- "doctype" : "json",
- "xmlVersion" : "1.8",
- "keyfrom" : "fanyi.web",
- "ue" : "UTF-8",
- "action" : "FY_BY_CLICKBUTTON",
- "typoResult" : "true"
- }
- head = {}
- data = urllib.parse.urlencode(data).encode('utf-8')
- req = urllib.request.Request(url,data,head)
- req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36')
- response = urllib.request.urlopen(req)
- html = response.read().decode('utf-8')
- return (json.loads(html)['translateResult'][0][0]['tgt'])
- else:
- translate(' ')
- def e1after():
- global text1, text2
- text2 = e1.get(1.0,tk.END)
- if text2 == None or text2 == '':
- text2 = ' '
- if text2 != text1:
- trans = translate(text2)
- e2['state'] = "normal"
- e2.delete(1.0,tk.END)
- e2.insert(1.0,trans)
- e2['state'] = "disabled"
- else:
- pass
- text1 = text2
- e1.after(3000, e1after)
- if __name__ == '__main__':
- tk.Label(root, text="需要翻译的内容:").grid(row=0, column=0)
- tk.Label(root, text="翻译结果:").grid(row=2, column=0)
- e1 = tk.Text(root,width=50,height=10)
- e2 = tk.Text(root,width=50,height=10, state="disabled")
- e1.grid(row=0, column=1, padx=10, pady=5)
- e2.grid(row=2, column=1, padx=10, pady=5)
- e1.insert(1.0, ' ')
- e1after()
- tk.mainloop()
复制代码 |
|