平时经常在网上翻译一些单词,突发奇想,可不可以直接调某些免费翻译网站的接口呢?然后做一个图形界面的翻译小工具?下面开始实践
1.先找一下有哪些免费翻译的接口
百度了一下关键字“免费翻译接口”,然后找到一篇帖子,是介绍有哪些免费翻译接口的,上面有谷歌翻译、百度翻译、有道翻译、必应翻译等等,最终选择了有道翻译
2.使用requests库请求
代码构造如下
# -*- coding:utf-8 -*- import requests string = str(input("请输入一段要翻译的文字:")) data = { 'doctype': 'json', 'type': 'AUTO', 'i':string } url = "http://fanyi.youdao.com/translate" r = requests.get(url,params=data) result = r.json() print(result)
运行结果如下
可以看到“tgt”就是翻译结果,提取翻译结果,如下
translate_result = result['translateResult'][0][0]["tgt"] print(translate_result)
3.利用tkinter做一个GUI界面程序
# -*- coding:utf-8 -*- import requests from requests.exceptions import RequestException import tkinter as tk class Translate(): def __init__(self): self.window = tk.Tk() #创建window窗口 self.window.title("简易翻译器") # 定义窗口名称 self.window.resizable(0,0) # 禁止调整窗口大小 self.input = tk.Entry(self.window, width=80) # 创建一个输入框,并设置尺寸 self.info = tk.Text(self.window, height=18) # 创建一个文本展示框,并设置尺寸 # 添加一个按钮,用于触发翻译功能 self.t_button = tk.Button(self.window, text='翻译', relief=tk.RAISED, width=8, height=1, command=self.fanyi) # 添加一个按钮,用于触发清空输入框功能 self.c_button1 = tk.Button(self.window, text='清空输入', relief=tk.RAISED, width=8, height=1, command=self.cle_e) # 添加一个按钮,用于触发清空输出框功能 self.c_button2 = tk.Button(self.window, text='清空输出', relief=tk.RAISED,width=8, height=1, command=self.cle) # 添加一张图标 self.image_file = tk.PhotoImage(file='py128.png') self.label_image = tk.Label(self.window, image=self.image_file) def gui_arrang(self): """完成页面元素布局,设置各部件的位置""" self.input.grid(row=0,sticky="W",padx=1) self.info.grid(row=1) self.t_button.grid(row=0,column=1,padx=2) self.c_button1.grid(row=0, column=2, padx=2) self.c_button2.grid(row=0,column=3,padx=2) self.label_image.grid(row=1, column=1,columnspan=3) def fanyi(self): """定义一个函数,完成翻译功能""" original_str = self.input.get() # 定义一个变量,用来接收输入框输入的值 data = { 'doctype': 'json', 'type': 'AUTO', 'i': original_str # 将输入框输入的值,赋给接口参数 } url = "http://fanyi.youdao.com/translate" try: r = requests.get(url, params=data) if r.status_code == 200: result = r.json() translate_result = result['translateResult'][0][0]["tgt"] self.info.delete(1.0, "end") # 输出翻译内容前,先清空输出框的内容 self.info.insert('end',translate_result) # 将翻译结果添加到输出框中 except RequestException: self.info.insert('end', "发生错误") def cle(self): """定义一个函数,用于清空输出框的内容""" self.info.delete(1.0,"end") # 从第一行清除到最后一行 def cle_e(self): """定义一个函数,用于清空输入框的内容""" self.input.delete(0,"end") def main(): t = Translate() t.gui_arrang() tk.mainloop() if __name__ == '__main__': main()
效果如下
关于GUI编程参考:https://www.jianshu.com/p/8abcf73adba3