好了,下面我们开始讲解代码
第一步,当然是安装模块啦。老规矩,打开cmd,以管理员身份运行。然后开始安装模块。
pip install requests
pip install tkinter
pip install json
然后,就开始写代码了。先导入模块。
import requests
import json
from tkinter import *
设置一下代理和URL,这里注意一下这个地址,官网复制过来之后是http://fanyi.youdao.com/,然而我搞了大半天都是报错,后来经过百度之后发现,原来是网易在URL上做了手脚,又经过查找得到其隐藏掉的另一段,这里我就直接贴过来了。
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'}
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
接下来就是核心代码了,先定义一个提交数据/爬取数据的鼠标事件。
def m1Click():
data = {
"i": en.get(),
"doctype": "json"
}
#浏览器显示需要提交很多条信息,但无意间发现只需要提交这两个就可以了。所以在这我就不贴其他的信息了
back = requests.post(url, data=data, headers=headers)
data = back.json() #接收返回的json数据
x = data['translateResult'][0][0]['tgt'] #最终提取有用的字段
txt.set(x)
然后接着再来定义一个函数,这个函数的功能先不做介绍,后面会提到。
def m2Click():
log_in.delete(0,END)
result.delete(0,END)
然后再来定义一个函数,这个函数的目的是实现输入信息之后敲回车键可以直接调用m1Click鼠标事件,相当于直接点击下面的翻译按钮。
def m3Click(self):
m1Click()
下面就是该设计界面了,作为一个正儿八经没有艺术细胞的理工男,设计界面是很糟心的,所以干脆简单暴力点,直接使用绝对布局。
top = Tk()
top.geometry('400x235')
top.title('翻译')
en = StringVar()
txt = StringVar()
show = Label(top,text = "请输入翻译内容:",font = ('黑体','12'))
log_in = Entry(top,textvariable = en,width=30,font = ('黑体','12'))
result = Entry(top,textvariable = txt,width = 46,font = ('黑体','12'))
#这里本来应该用Label标签,但是想到Label标签不能复制,所以就用了Entry,毕竟cv大法很是方便
trans = Button(top,text = "翻译",command = m1Click,font = ('黑体','12'))
clean = Button(top,text = "清空",command = m2Click,font = ('黑体','12'))
#这里的m2Click事件便是之前所说的,这个的目的是实现清空两个文本框的功能,直接点击“清空”按钮便可清空文本框中的数据,方便下次输入。
log_in.bind("" , m3Click)
log_in.focus() #光标默认在log_in框中,即输入框
top.resizable(0,0) #固定窗口大小
show.place(x = 10,y = 20)
log_in.place(x = 140,y = 20)
trans.place(x = 90,y = 70)
clean.place(x = 260,y = 70)
result.place(x = 10,y = 120)
top.mainloop()
好了,代码到这就可以结束了。接下来要做的就是生成可执行文件了。
首先还是安装pyinstaller模块。
pip install pyinstaller
然后就是进行生成。
cd xxxxxx //进入存放py文件的文件目录
pyinstaller -F -w -i xxx.ico xxx.py //进行生成,其中包含图标文件
//-F 打包单个文件
//-w 使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效),如果是GUI界面,建议使用此参数
//-i 将file.ico添加为可执行文件的资源(只对Windows系统有效),即改变程序的图标
好了,小工具写到这就算实现了,下面贴上我的运行效果以及资源链接。