(本博客简洁明了,适合小白入门)
首先明确整体构架:
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'] = contentdata['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.messageboxurl = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'def fanyi():content = sr.get()data = {}data['i'] = contentdata['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~瞧瞧这高水平的翻译)
注:毕竟不是大佬,表达能力又欠缺,所以难免有疏漏之处,欢迎评论指正
还有,如果有小伙伴对本博客的内容存在疑惑,可关注、骚扰