• 如何用 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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    运行结果如下

    在这里插入图片描述
    可以看到“tgt”就是翻译结果,提取翻译结果,如下

    translate_result = result['translateResult'][0][0]["tgt"]
    print(translate_result)
    
    • 1
    • 2

    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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64

    效果如下

    在这里插入图片描述
    读者福利:知道你对Python感兴趣,还准备了这套python学习资料

    对于0基础小白入门:

    如果你是零基础小白,想快速入门Python是可以考虑的。

    一方面是学习时间相对较短,学习内容更全面更集中。
    二方面是可以找到适合自己的学习方案

    包括:Python永久使用安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等学习教程。带你从零基础系统性的学好Python!

    零基础Python学习资源介绍

    👉Python学习路线汇总👈

    Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)

    👉Python必备开发工具👈

    温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

    👉Python学习视频600合集👈

    观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

    👉实战案例👈

    光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

    👉100道Python练习题👈

    检查学习结果。

    👉面试刷题👈



    在这里插入图片描述

    资料领取

    这份完整版的Python全套学习资料已为大家备好,朋友们如果需要可以微信扫描下方二维码添加,输入"领取资料" 可免费领取全套资料有什么需要协作的还可以随时联系我朋友圈也会不定时的更新最前言python知识。↓↓↓
    或者

    点此链接】领取

    好文推荐

    了解python的前景:https://blog.csdn.net/xiqng17111342931/article/details/127705925

    了解python的副业:https://blog.csdn.net/xiqng17111342931/article/details/127872402

  • 相关阅读:
    在ubuntu安装nvidia驱动 (亲测有效,这是方法二)
    固态硬盘SSD
    Platypus:快速、廉价且强大的大模型
    Jetson AGX Orin L4T35.1.0 源码环境搭建 & SDKmanager刷机以及第三方定制版厂家刷机教程的区别
    基于STM32的指纹识别智能锁设计
    为啥不建议使用Select *
    leetcode每天5题-Day31
    Centos7常用基本命令使用(时间日期类、用户组管理类、文件权限类)
    数组对象出现的新功能
    微信小程序获取用户信息
  • 原文地址:https://blog.csdn.net/xiqng17111342931/article/details/128102488