zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    三数之和
    罗马数字与整数
    Oracle 开启或关闭归档
    Oracle RMAN scripts to delete archivelog
    Oracle check TBS usage
    Oracle kill locked sessions
    场景9 深入RAC运行原理
    场景7 Data Guard
    场景4 Data Warehouse Management 数据仓库
    场景5 Performance Management
  • 原文地址:https://www.cnblogs.com/hanmk/p/10705870.html
Copyright © 2011-2022 走看看