admin管理员组

文章数量:1532656

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

首先明确整体构架:

1.爬虫部分

2.界面部分

3.打包

 

涵盖的库:

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

先确定爬取的URL地址:

url = 'http://fanyi.youdao/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/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/convertico/),保存与到要打包的py文件同一路径下。

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

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

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

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

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

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

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

本文标签: 中英互译软件Python