• 用Python自制桌面版翻译软件


    自制一个翻译软件,并打包成exe
    在这里插入图片描述
    原文:70行代码撸一个桌面自动翻译神器!

    代码:

    import re
    import html
    from urllib import parse
    import requests
    import PySimpleGUI as sg
    
    url = 'http://translate.google.cn/m?q=%s&tl=%s&sl=%s'
    
    def translate(text, to_language="en", text_language="auto"):
        text = parse.quote(text)
        url1 = url % (text, to_language, text_language)
        response = requests.get(url1)
        data = response.text
        # print(data)
        expr = r'(?s)class="(?:t0|result-container)">(.*?)<'
        result = re.findall(expr, data)
        print(result)
        if (len(result) == 0):
            return ""
        return html.unescape(result[0])
    
    def translate_window():
        sg.theme('bluepurple')  # 设置主题
        font = ("fangsong", 12)  # 字体仿宋,大小12
        menu = [["Help", ["About", "Item", "Author"]]]  # 菜单栏设置
        value = ['汉语', '英语', '日语', '法语', '俄语', '自动']  # 语言选择(前端显示),默认只有6种,可以自己添加
        var = ['zh', 'en', 'ja', 'fr', 'ru', 'auto']  # 语言选择(后端执行时)
        dic = dict(zip(value, var))  # 语言字典配置
        layout = [[sg.Menu(menu, tearoff=False)],
                  [sg.Text(text='Input', size=(26, 1)),
                   sg.Text(text='将', size=(2, 1), justification='center'),
                   sg.Combo(values=value, key='from', size=(10, 1)),
                   sg.Text(text='翻译为', size=(5, 1), justification='center'),
                   sg.Combo(values=value, key='to', size=(10, 1))],
                  [sg.Multiline(key="-IN-", size=(60, 8), font=font)],
                  [sg.Text(text='Output', size=(30, 1))],
                  [sg.Multiline(key="-OUT-", size=(60, 8), font=font)],
                  [sg.Text(text='', size=(36, 1)),
                   sg.Button("翻译", size=(6, 1)),
                   sg.Button("清除", size=(6, 1)),
                   sg.Button("退出", size=(6, 1))]
                  ]
        window = sg.Window("自制桌面翻译器", layout, icon="CT.ico")  # 设置窗口名称,窗口布局,以及图标
    
        while True:
            event, values = window.read()
            if event in (None, "退出"):  # 点击“X”或者“退出”按钮时才退出
                break
            if event == "翻译":
                if values["to"] == '' or values["from"] == '':  # 未选择语言类型时弹窗提示
                    sg.Popup("请选择语言类型后重试,谢谢!")
                else:
                    tar = translate(values["-IN-"], dic[values["to"]], dic[values["from"]])
                    window["-OUT-"].Update(tar)
            if event == "清除":
                window["-IN-"].Update("")
                window["-OUT-"].Update("")
            if event == "About":
                sg.Popup("使用方法:",
                         "'翻译'确认输入,并输出翻译结果",
                         "'清除'清除已有输入,清空翻译的结果",
                         "'退出'取消,并退出App", title='', font=font, auto_close=1)
            if event == "Item":
                sg.Popup("翻译类型:",
                         "'输入类型' 输入的语言类型",
                         "'输出类型' 输出的语言类型", title='', font=font, auto_close=1)
            if event == "Author":
                sg.Popup("作者简介:",
                         "姓名:XXXXXX",
                         "Wechat:XXXXXX",
                         "E-mail:XXXXXX@qq.com", title='', font=font, auto_close=1)
        window.close()
    
    
    if __name__ == '__main__':
        translate_window()
    
    • 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
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76

    上边就把主要逻辑完成了,运行py文件,即可得到如下效果:
    在这里插入图片描述

    但是,怎么给别人用呢?别人电脑上没安装Python开发环境,就运行不了。有没有什么办法可以直接在其他电脑上(Windows)直接运行?
    可以试试用pyinstaller打包 Python 程序生成 exe

    1、新建一个虚拟环境(这样可以解决 exe 文件可能过大问题)

    在这里插入图片描述
    2、进入虚拟环境
    在这里插入图片描述

    3、激活虚拟环境(在cmd命令行窗口中输入:activate)
    在这里插入图片描述
    4、安装依赖包(cmd命令行中输入pip命令安装依赖包)

    pip install requests
    pip install PySimpleGUI
    pip install pyinstaller
    
    • 1
    • 2
    • 3

    5、进行打包操作

    pyinstaller -F -w D:\code\MyProject\translation\google_translation.py
    
    • 1

    第五步的时候碰到了问题,运行命令:pyinsatller -F -w google_translation.py
    总是提示我:‘pyinsatller’ 不是内部或外部命令,也不是可运行的程序或批处理文件。
    在这里插入图片描述
    这个应该是没有配置环境变量,网上很多方法教怎么配置环境变量,那种方法可行。但是没啥必要,因为环境变量的作用其实就是让系统知道这个命令在哪,然后去执行这个命令。
    那么我们已经知道pyinstaller这个在哪里了,直接在那个文件夹下面执行命令就好了。

    所以,先在cmd命令窗口里,用cd命令进入pyinstaller 所在的文件夹
    把报错的命令:pyinsatller -F -w google_translation.py
    改成
    pyinstaller -F -w D:\code\MyProject\translation\google_translation.py
    即可
    在这里插入图片描述
    扩展说明:
    pyinstaller 指令的常见可选参数:

    • -i 给应用程序添加图标
    • -F 指定打包后只生成一个exe格式的文件
    • -D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
    • -c –console, –nowindowed 使用控制台,无界面(默认)
    • -w –windowed, –noconsole 使用窗口,无控制台
    • -p 添加搜索路径

    6、打包完成的提示:
    在这里插入图片描述
    打包完成后,在当前的目录下,将会生成两个文件夹:build 和 dist。
    在这里插入图片描述
    dist 里面就是所有可执行 exe 文件
    在这里插入图片描述
    把这个文件发给其他人即可。

    7、退出虚拟环境

    deactivate
    
    • 1

    原文的核心代码逻辑没动,只是增加了打包成exe的过程。

  • 相关阅读:
    【Linux】VI和VIM命令详解
    Android 中集成 TensorFlow Lite图片识别
    Cesium小技巧:快速打开API文档
    OA项目之我的审批(查询&会议签字)
    产品-Axure9(英文版),中继器(Repeater)实现表格内容的增删查改(CRUD)
    中国麻纺织行业深度调查与投资潜力分析报告
    全/半连接队列(Linux环境下listen函数的第二个参数的意义)
    《下一代互联网(IPv6)搭建与运维》1+X证书
    echart 两个柱状图并列,共用一个y轴的label
    golang 数组 对象排序
  • 原文地址:https://blog.csdn.net/xkukeer/article/details/126287827