自制一个翻译软件,并打包成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
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)
menu = [["Help", ["About", "Item", "Author"]]]
value = ['汉语', '英语', '日语', '法语', '俄语', '自动']
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, "退出"):
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()
上边就把主要逻辑完成了,运行py文件,即可得到如下效果:
但是,怎么给别人用呢?别人电脑上没安装Python开发环境,就运行不了。有没有什么办法可以直接在其他电脑上(Windows)直接运行? 可以试试用pyinstaller打包 Python 程序生成 exe
1、新建一个虚拟环境(这样可以解决 exe 文件可能过大问题)
2、进入虚拟环境
3、激活虚拟环境(在cmd命令行窗口中输入:activate) 4、安装依赖包(cmd命令行中输入pip命令安装依赖包)
pip install requests
pip install PySimpleGUI
pip install pyinstaller
5、进行打包操作
pyinstaller -F -w D:\code\MyProject\translation\google_translation.py
第五步的时候碰到了问题,运行命令: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
原文的核心代码逻辑没动,只是增加了打包成exe的过程。
|