使用python打造一个中英互译软件(基于有道翻译)

1 篇文章 0 订阅
1 篇文章 0 订阅

(本博客简洁明了,适合小白入门)

首先明确整体构架:

1.爬虫部分

2.界面部分

3.打包

 

涵盖的库:

import urllib.request
import urllib.parse
import json
import tkinter as tk
import tkinter.messagebox

先确定爬取的URL地址:

url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'

1.爬虫部分

使用一个函数实现该功能,该函数内还包含了输入内容传递、列表框的翻译结果显示部分等与界面部分联系

输入翻译内容、传递、获取网页响应,爬取翻译内容:

def fanyi():


    content = sr.get()

    data = {}
    data['i'] = content
    data['from'] = 'AUTO'
    data['to'] = 'AUTO'
    data['smartresult'] = 'dict'
    data['client'] = 'fanyideskweb'
    data['salt'] = '15613765644784'
    data['sign'] = '5caabbf646f6585277b7cebf45f18244'
    data['ts'] = '1561376564478'
    data['bv'] = '6074bfcb52fb292f0428cb1dd669cfb8'
    data['doctype'] = 'json'
    data['version'] = '2.1'
    data['keyfrom'] = 'fanyi.web'
    data['action'] = 'FY_BY_REALTlME'

    data = urllib.parse.urlencode(data).encode('utf-8')

    r = urllib.request.urlopen(url,data)
    html = r.read().decode('utf-8')

    target = json.loads(html)

    jieguo = target['translateResult'][0][0]['tgt']




    xs.insert(tk.END, '{}'.format(jieguo))
    xs.see(tk.END)
    xs.update()
    # tkinter.messagebox.showwarning('翻译结果', '{}'.format(jieguo))
    xs.insert(tk.END, '*********翻译完成,清空输入框重新输入<>如需复制,点击内容Ctrl+C即可*********')
    xs.see(tk.END)
    xs.update()

2.界面部分

使用tkinter实现简单的用户界面

其中包括主界面、界面中的功能按钮(函数调用到按钮命令)及其实现函数等等

其中quit(退出)命令在打包时使程序运行失败,具体原因待考究,所以如果需要打包函数ml1中的quit删除,用警告框代替(#后部分),程序运行时请手动点击右上角X退出

def ml():
    quit()
#  tk.messagebox.showwarning("抱歉", "目前该功能正在完善中")


def ml2():
    xs.delete(0,tk.END)




fy = tk.Tk()               #yy为Tk类型
fy.geometry('463x350')     #设置界面大小

fy.title('王牌翻译器1.0(Roud)')    #界面主题(左上角)

label = tk.Label(fy,text='请输入需要翻译的内容:')          #界面内文本显示
label.grid(row=0,column=0,sticky='w',padx=5)    #文本位置

sr = tk.Entry(fy,width=37)                    #界面输入框
sr.grid(row=0,column=1,columnspan=2,sticky='w')  #输入框位置,W为西,E为东

xs = tk.Listbox(fy, width=65, heigh=15)            #显示框大小
xs.grid(row=1,columnspan=3,sticky='w')
'''
源代码来源:Roud    更多详情  请在CSDN搜索博主:101岁咳血敲码
感谢 有道翻译 对本程序的支持

'''


# def ml1():
#     tkinter.messagebox.showwarning('警告','尚在开发中')


b1=tkinter.Button(fy,text='确认',command=fanyi,width=10)
b1.grid(row=2,column=0,sticky='w')

b2=tkinter.Button(fy,text='清空',command=ml2,width=10)
b2.grid(row=2,column=1,sticky='w')


b2=tkinter.Button(fy,text='退出',command=ml,width=10)
b2.grid(row=2,column=2,sticky='e')

fy.mainloop()

完整代码:

import urllib.request
import urllib.parse
import json
import tkinter as tk
import tkinter.messagebox


url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'

def fanyi():


    content = sr.get()

    data = {}
    data['i'] = content
    data['from'] = 'AUTO'
    data['to'] = 'AUTO'
    data['smartresult'] = 'dict'
    data['client'] = 'fanyideskweb'
    data['salt'] = '15613765644784'
    data['sign'] = '5caabbf646f6585277b7cebf45f18244'
    data['ts'] = '1561376564478'
    data['bv'] = '6074bfcb52fb292f0428cb1dd669cfb8'
    data['doctype'] = 'json'
    data['version'] = '2.1'
    data['keyfrom'] = 'fanyi.web'
    data['action'] = 'FY_BY_REALTlME'

    data = urllib.parse.urlencode(data).encode('utf-8')

    r = urllib.request.urlopen(url,data)
    html = r.read().decode('utf-8')

    target = json.loads(html)

    jieguo = target['translateResult'][0][0]['tgt']




    xs.insert(tk.END, '{}'.format(jieguo))
    xs.see(tk.END)
    xs.update()
    # tkinter.messagebox.showwarning('翻译结果', '{}'.format(jieguo))
    xs.insert(tk.END, '*********翻译完成,清空输入框重新输入<>如需复制,点击内容Ctrl+C即可*********')
    xs.see(tk.END)
    xs.update()

def ml():
    quit()
#  tk.messagebox.showwarning("抱歉", "目前该功能正在完善中")


def ml2():
    xs.delete(0,tk.END)




fy = tk.Tk()               #yy为Tk类型
fy.geometry('463x350')     #设置界面大小

fy.title('王牌翻译器1.0(Roud)')    #界面主题(左上角)

label = tk.Label(fy,text='请输入需要翻译的内容:')          #界面内文本显示
label.grid(row=0,column=0,sticky='w',padx=5)    #文本位置

sr = tk.Entry(fy,width=37)                    #界面输入框
sr.grid(row=0,column=1,columnspan=2,sticky='w')  #输入框位置,W为西,E为东

xs = tk.Listbox(fy, width=65, heigh=15)            #显示框大小
xs.grid(row=1,columnspan=3,sticky='w')
'''
源代码来源:Roud    更多详情  请在CSDN搜索博主:101岁咳血敲码
感谢 有道翻译 对本程序的支持

'''


# def ml1():
#     tkinter.messagebox.showwarning('警告','尚在开发中')


b1=tkinter.Button(fy,text='确认',command=fanyi,width=10)
b1.grid(row=2,column=0,sticky='w')

b2=tkinter.Button(fy,text='清空',command=ml2,width=10)
b2.grid(row=2,column=1,sticky='w')


b2=tkinter.Button(fy,text='退出',command=ml,width=10)
b2.grid(row=2,column=2,sticky='e')

fy.mainloop()

效果图:

3.打包部分

首先制作图标:选择一张喜欢的图片,进入网站生成图标即ico格式(参考网站:https://lvwenhan.com/convertico/),保存与到要打包的py文件同一路径下。

其次,在cmd指令下切换到py文件目录

最后输入指令 (注意将指令中的中文部分修改成你在目录下相应的名称)

pyinstaller -F -w -i 你的图标名,带ico格式.ico 你的py名.py 

最后打包成功,在文件目录下会多出一个dist文件,exe文件就在其中

如下(ou~瞧瞧这高水平的翻译

注:毕竟不是大佬,表达能力又欠缺,所以难免有疏漏之处,欢迎评论指正

还有,如果有小伙伴对本博客的内容存在疑惑,可关注、骚扰

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,以下是一个简单的中泰互译翻译网页的Python实现: ```python from flask import Flask, render_template, request import requests app = Flask(__name__) @app.route('/') def home(): return render_template('home.html') @app.route('/translate', methods=['POST']) def translate(): text = request.form['text'] lang = request.form['lang'] if lang == 'th': url = f'https://translate.googleapis.com/translate_a/single?client=gtx&sl=zh&tl=th&dt=t&q={text}' else: url = f'https://translate.googleapis.com/translate_a/single?client=gtx&sl=th&tl=zh&dt=t&q={text}' response = requests.get(url) translation = response.json()[0][0][0] return render_template('translate.html', text=text, translation=translation, lang=lang) if __name__ == '__main__': app.run(debug=True) ``` 这个应用程序与上一个应用程序很相似,但使用了不同的翻译 API 和语言代码。它使用 Google Translate API 来翻译中文和泰语之间的文本。语言代码使用 ISO 639-1 标准,`zh` 表示中文,`th` 表示泰语。 同样,你需要创建两个 HTML 模板来与这个应用程序配合使用。以下是它们的示例: `home.html`: ```html <!DOCTYPE html> <html> <head> <title>Translate</title> </head> <body> <h1>Translate</h1> <form action="/translate" method="post"> <label for="text">Text:</label> <input type="text" name="text" id="text"><br><br> <label for="lang">Language:</label> <select name="lang" id="lang"> <option value="zh">Chinese</option> <option value="th">Thai</option> </select><br><br> <input type="submit" value="Translate"> </form> </body> </html> ``` `translate.html`: ```html <!DOCTYPE html> <html> <head> <title>Translation</title> </head> <body> <h1>Translation</h1> <p>Original text: {{ text }}</p> <p>Translation: {{ translation }}</p> <p><a href="/">Translate another text</a></p> </body> </html> ``` 这个应用程序依赖 Flask 和 Requests 库,你需要安装它们才能运行该应用程序。可以使用以下命令安装它们: ``` pip install flask requests ``` 运行应用程序的命令是: ``` python app.py ``` 然后,在浏览器中打开 `http://localhost:5000/`,你应该会看到一个文本框和一个下拉列表框。在文本框中输入要翻译的文本,然后选择要翻译成的语言,然后点击“Translate”按钮。你将被重定向到另一个页面,其中将显示原始文本和翻译结果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值