python之做一个简易的翻译器(一)

平时经常在网上翻译一些单词,突发奇想,可不可以直接调某些免费翻译网站的接口呢?然后做一个图形界面的翻译小工具?下面开始实践

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

posted @ 2019-04-14 17:28  我是冰霜  阅读(19556)  评论(1编辑  收藏  举报