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

  • 相关阅读:
    python中Cmap的用法
    Js中 关于top、clientTop、scrollTop、offsetTop
    通过ByteArray来播放MP3
    JS中的call()和apply()方法
    flash 屏幕更新 Essential.ActionScript
    Aptana Studio 3 如何汉化,实现简体中文版
    Flash Builder更新Flash player版本
    随机不重复
    Aptana :调试 javascript 图解
    获取两个数组的相同元素或不相同的元素
  • 原文地址:https://www.cnblogs.com/hanmk/p/10705870.html
Copyright © 2011-2022 走看看