Python制作翻译工具(程序员必备中英文翻译工具)
Posted 玩家_名狱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python制作翻译工具(程序员必备中英文翻译工具)相关的知识,希望对你有一定的参考价值。
因为我英文不好,对接口、函数、结构体起名字的时候特别为难,因此我使用Python写了一个工具
在输入框输入中文,就可以生成Golang语言对应的接口、函数或接口体的写法;也可以切换到英文翻译。如下演示:
看懂代码之后,就可以修改为其它语言对应的写法。这里使用到百度的翻译API,因此自己要替换掉下面的两个key值就直接可以用了。
Baidufanyi类用于中英文翻译;
Initface类用于创建窗口,之后调用第一个Frame,这里为了能切换不同页面,使用两个Frame作为两个页面
OneFace类是第一个页面,init函数用于初始化页面,faceUI方法用于显示控件和逻辑控制,并使用了grid布局,oneBack方法用于销毁本页面并切换到另一个页面
TwoFace类和第一个页面用法一致,页面使用了pack布局
# 翻译.py
import tkinter
import requests
import hashlib
import pyperclip
import time
class Baidufanyi:
def __init__(self, appid="百度API的应用ID", key="百度API的key"):
self.appid = appid
self.key = key
self.salt = "1435660288"
def getEnglish(self, srcdata):
q = srcdata
froms = "&from=zh"
tos = "&to=en"
sign = self.appid+q+self.salt+self.key
sign = "&sign="+hashlib.md5(sign.encode(encoding='utf-8')).hexdigest()
url = "http://api.fanyi.baidu.com/api/trans/vip/translate?"+"q="+q + \\
froms+tos+"&appid="+self.appid+"&salt="+self.salt+sign
result = requests.get(url)
en_resu = eval(result.text)
return en_resu["trans_result"][0]["dst"]
def getChina(self, srcdata):
q = srcdata
froms = "&from=en"
tos = "&to=zh"
sign = self.appid+q+self.salt+self.key
sign = "&sign="+hashlib.md5(sign.encode(encoding='utf-8')).hexdigest()
url = "http://api.fanyi.baidu.com/api/trans/vip/translate?"+"q="+q + \\
froms+tos+"&appid="+self.appid+"&salt="+self.salt+sign
result = requests.get(url)
en_resu = eval(result.text)
return en_resu["trans_result"][0]["dst"]
fanyi = Baidufanyi()
class Initface:
def __init__(self, windows):
self.windows = windows
self.windows.title("Golang翻译")
self.windows.iconbitmap('D:/Python代码/Python的py转exe/mingyu.ico')
self.windows.geometry('610x300') # 设置窗口大小
self.windows.configure(background='#87CEFF')
OneFace(self.windows) # 默认打开第一个页面
# 第一个页面
class OneFace:
def __init__(self, oneWindows):
self.oneWindows = oneWindows
self.oneface = tkinter.Frame(self.oneWindows)
self.oneface.configure(background='#87CEFF')
self.oneface.grid()
self.faceUI()
# 使用了grid布局,显示控件,里面的函数用于逻辑处理
def faceUI(self):
# 获取翻译结果并写入到大文本框
def getEn():
text.delete("0.0", "end") # 删除大文本框的内容
srcdata = getTextInput(text_0).replace(
'\\n', '').replace(' ', '')
if srcdata == "":
return
data = fanyi.getEnglish(srcdata)
text.insert("0.0", data)
# 获取翻译结果并写入到大文本框
def getInterface():
text.delete("0.0", "end") # 删除大文本框的内容
srcdata = getTextInput(text_1).replace(
'\\n', '').replace(' ', '')
if srcdata == "":
return
data = fanyi.getEnglish(srcdata).replace(
' ', '').replace('?', '').replace('\\'', '')
data = "// " + srcdata + "接口\\ntype " + \\
data + "er" + " interface\\n\\t\\n"
text.insert("0.0", data)
# 获取翻译结果并写入到大文本框
def getStruct():
text.delete("0.0", "end") # 删除大文本框的内容
srcdata = getTextInput(text_2).replace(
'\\n', '').replace(' ', '')
if srcdata == "":
return
data = fanyi.getEnglish(srcdata).replace(
' ', '').replace('\\'', '').replace('?', '')
data = "// " + srcdata + "结构体\\ntype " + \\
data.capitalize() + " struct\\n\\t\\n"
text.insert("0.0", data)
# 获取翻译结果并写入到大文本框
def getFunc():
text.delete("0.0", "end") # 删除大文本框的内容
srcdata = getTextInput(text_3).replace(
'\\n', '').replace(' ', '')
if srcdata == "":
return
data = fanyi.getEnglish(srcdata).replace(
' ', '').replace('?', '').replace('\\'', '')
data = "// " + srcdata + "函数\\nfunc " + \\
data.capitalize() + "( ) (err error) " + "\\n\\t\\n"
text.insert("0.0", data)
def CopyData():
pyperclip.copy(text.get("0.0", "end"))
nowtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
tishistr.set('已复制\\n' + nowtime)
# 根据多行文本的变量名获取里面的值,textname:多行文本的变量名
def getTextInput(textname):
return textname.get("1.0", "end")
oneBtn_1 = tkinter.Button(
self.oneface, text="切换到中文翻译", bg="#32CD32", command=self.oneBack)
oneBtn_1.grid(row="0", column="2")
china0 = tkinter.Label(
self.oneface, text="输入中文普通翻译:", bg='#87CEFF', font=("微软雅黑", 13))
china0.grid(row="1", column="1")
text_0 = tkinter.Text(self.oneface, width="30",
height="2", bg='#FFBBFF')
text_0.grid(row="1", column="2")
btn_0 = tkinter.Button(
self.oneface, text="点击翻译", command=getEn, bg="#696969")
btn_0.grid(row="1", column="3")
china1 = tkinter.Label(
self.oneface, text="输入中文获取接口:", bg='#87CEFF', font=("微软雅黑", 13))
china1.grid(row="2", column="1")
text_1 = tkinter.Text(self.oneface, width="30",
height="2", bg='#FFBBFF')
text_1.grid(row="2", column="2")
btn_1 = tkinter.Button(
self.oneface, text="点击翻译", command=getInterface, bg="#696969")
btn_1.grid(row="2", column="3")
china2 = tkinter.Label(
self.oneface, text="输入中文获取结构体:", bg='#87CEFF', font=("微软雅黑", 13))
china2.grid(row="3", column="1")
text_2 = tkinter.Text(self.oneface, width="30",
height="2", bg='#FFBBFF')
text_2.grid(row="3", column="2")
btn_2 = tkinter.Button(
self.oneface, text="点击翻译", command=getStruct, bg="#B4EEB4")
btn_2.grid(row="3", column="3")
china3 = tkinter.Label(
self.oneface, text="输入中文获取函数:", bg='#87CEFF', font=("微软雅黑", 13))
china3.grid(row="4", column="1")
text_3 = tkinter.Text(self.oneface, width="30",
height="2", bg='#FFBBFF')
text_3.grid(row="4", column="2")
btn_3 = tkinter.Button(
self.oneface, text="点击翻译", command=getFunc, bg="#AB82FF")
btn_3.grid(row="4", column="3")
# 多行文本输入框
tishistr = tkinter.StringVar()
tishi = tkinter.Label(
self.oneface, textvariable=tishistr, bg='#87CEFF', font=("微软雅黑", 10))
tishi.grid(row="5", column="1")
text = tkinter.Text(self.oneface, width="40",
height=8, bg='#FF83FA')
text.grid(row="5", column="2")
btn_4 = tkinter.Button(
self.oneface, text="复制译文", command=CopyData, bg="#FF6A6A")
btn_4.grid(row="5", column="3")
def oneBack(self):
self.oneface.destroy()
TwoFace(self.oneWindows)
# 第二个页面
class TwoFace():
def __init__(self, twoWindows):
self.twoWindows = twoWindows
self.twoface = tkinter.Frame(self.twoWindows)
self.twoface.config(bg='#87CEFF')
self.twoface.pack()
self.faceUI()
# 使用了pack布局,显示控件
def faceUI(self):
# 根据多行文本的变量名获取里面的值,textname:多行文本的变量名
def getTextInput(textname):
return textname.get("1.0", "end")
def getCh():
twoText_2.delete("0.0", "end") # 删除大文本框的内容
srcdata = getTextInput(twoText_0).replace(
'\\n', '').replace(' ', '')
if srcdata == "":
return
data = fanyi.getChina(srcdata)
twoText_2.insert("0.0", data)
twoBtn_1 = tkinter.Button(
self.twoface, text="切换到英文翻译", bg="#32CD32", command=self.twoBack)
twoBtn_1.pack()
twoText_0 = tkinter.Text(
self.twoface, width="50", height="8", bg='#FF83FA')
twoText_0.pack()
twoBtn_0 = tkinter.Button(
self.twoface, text="点击翻译", bg="#7B68EE", command=getCh)
twoBtn_0.pack()
twoText_2 = tkinter.Text(
self.twoface, width="70", height="8", bg='#FF83FA')
twoText_2.pack()
# 切换到其他页面
def twoBack(self):
self.twoface.destroy() # 销毁页面
OneFace(self.twoWindows) # 切换到另一个页面
if __name__ == '__main__':
windows = tkinter.Tk()
Initface(windows)
windows.mainloop()
然后使用命令打包
pyinstaller -F -w -i D:\\Python代码\\Python的py转exe\\mingyu.ico D:\\Python代码\\Python的py转exe\\翻译.py
得到一个exe的文件
以上是关于Python制作翻译工具(程序员必备中英文翻译工具)的主要内容,如果未能解决你的问题,请参考以下文章
Python 打造基于有道翻译的命令行翻译工具(命令行爱好者必备)
Python爬虫实战,破解有道翻译JS加密,制作桌面翻译工具更新版