0
点赞
收藏
分享

微信扫一扫

Python中简单翻译软件的实现(结合百度API)

kiliwalk 2022-01-28 阅读 52

百度翻译开放平台提供了API,可以提供高质量的翻译服务,通过调用百度翻译API可以编写在线翻译程序,每月有200万字符的免费翻译。

只要拥有百度账号并申请成为开发者就可以获得所需要的账号和密码。

开发者申请链接:https://api.fanyi.baidu.com/api/trans/product/index

程序主要分为两个步骤:

第一步制作如下的窗口:

 

主程序为:

if __name__ =="__main__":
    root=Tk()
    root.title("单词翻译器")
    root['width']=250;root['height']=130
    Label(root,text='输入要翻译的内容:',width=15).place(x=1,y=1)
    Entry1=Entry(root,width=20)
    Entry1.place(x=110,y=1)
    Label(root,text='翻译的结果:',width=18).place(x=1,y=20)
    s=StringVar()
    Entry2=Entry(root,width=20,textvariable=s)
    Entry2.place(x=110,y=20)
    Button1=Button(root,text='翻译',width=8)
    Button1.place(x=40,y=80)
    Button2=Button(root,text='清空',width=8)
    Button2.place(x=110,y=80)
    Button1.bind("<Button-1>",leftClick) #该步骤主要让窗口与鼠标建立练习,左键单击将实现leftClick函数(该函数将在文章的下一个程序中给出),下同。
    Button2.bind("<Button-1>",leftClick2)
    root.mainloop()

第二步定义翻译函数:

def translate_Word(en_str):
        URL='http://api.fanyi.baidu.com/api/trans/vip/translate'
        Form_Data={}
        Form_Data['from']='en'
        Form_Data['to']='zh'
        Form_Data['q']=en_str
        Form_Data['appid']='*************' #该appid为申请的平台分配的id
        Form_Data['salt']='1435660288'     #该数可以随意输入
        Key="*************"            #该数为申请平台分配的密钥
        m=Form_Data['appid']+en_str+Form_Data['salt']+Key
        m_MD5=hashlib.md5(m.encode('utf8'))
        Form_Data['sign']=m_MD5.hexdigest()
        data=parse.urlencode(Form_Data).encode('utf-8')
        response=request.urlopen(URL,data)
        html=response.read().decode('utf-8')
        translate_results=json.loads(html)
        print(translate_results)
        translate_results=translate_results['trans_result'][0]['dst']
        print("翻译的结果是:%s"%translate_results)
        return translate_results
    def leftClick(event):
        en_str=Entry1.get()
        print(en_str)
        vText=translate_Word(en_str)
        Entry2.config(Entry2,text=vText)
        s.set("")
        Entry2.insert(0,vText)
    def leftClick2(event):
        s.set("")
        Entry2.insert(0,"")

最后综合以上两个主程序完整的程序为:

from tkinter import *
from urllib import request
from urllib import parse
import json
import hashlib
if __name__ =="__main__":
    root=Tk()
    root.title("单词翻译器")
    root['width']=250;root['height']=130
    Label(root,text='输入要翻译的内容:',width=15).place(x=1,y=1)
    Entry1=Entry(root,width=20)
    Entry1.place(x=110,y=1)
    Label(root,text='翻译的结果:',width=18).place(x=1,y=20)
    s=StringVar()
    Entry2=Entry(root,width=20,textvariable=s)
    Entry2.place(x=110,y=20)
    Button1=Button(root,text='翻译',width=8)
    Button1.place(x=40,y=80)
    Button2=Button(root,text='清空',width=8)
    Button2.place(x=110,y=80)
    def translate_Word(en_str):
        URL='http://api.fanyi.baidu.com/api/trans/vip/translate'
        Form_Data={}
        Form_Data['from']='en'
        Form_Data['to']='zh'
        Form_Data['q']=en_str
        Form_Data['appid']='***************'  #平台分发的appid
        Form_Data['salt']='1435660288'
        Key="****************"   #平台分发的密钥
        m=Form_Data['appid']+en_str+Form_Data['salt']+Key
        m_MD5=hashlib.md5(m.encode('utf8'))
        Form_Data['sign']=m_MD5.hexdigest()
        data=parse.urlencode(Form_Data).encode('utf-8')
        response=request.urlopen(URL,data)
        html=response.read().decode('utf-8')
        translate_results=json.loads(html)
        print(translate_results)
        translate_results=translate_results['trans_result'][0]['dst']
        print("翻译的结果是:%s"%translate_results)
        return translate_results
    def leftClick(event):
        en_str=Entry1.get()
        print(en_str)
        vText=translate_Word(en_str)
        Entry2.config(Entry2,text=vText)
        s.set("")
        Entry2.insert(0,vText)
    def leftClick2(event):
        s.set("")
        Entry2.insert(0,"")
    Button1.bind("<Button-1>",leftClick)
    Button2.bind("<Button-1>",leftClick2)
    root.mainloop()

其中appid,密钥是向百度平台申请分发的,申请链接已在文章开头给出,申请方法很简单且免费,申请获得id和密钥后填入相应程序即可。

最后希望该程序对大家能够有所帮助。

举报

相关推荐

0 条评论