Python实现桌面翻译小工具(有道API实现)

Python实现桌面翻译小工具(有道API实现)


最近写文档需要用到大量的英文词汇,而用网易有道翻译客户端又有些卡顿,于是想着自己做一个简易版的翻译工具 。


-------------------------------------------手动分割线-------------------------------------------------


首先讲一下我的实现原理,其实非常的简单,没有任何技术含量。 使用Python的requests库调用网易的接口,拿到服务器返回的内容,然后通过GUI界面展示出来。

好了,下面我们开始讲解代码

第一步,安装模块。打开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("<Return>", 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系统有效),即改变程序的图标 

好了,小工具写到这就算实现了,下面贴上我的运行效果。

在这里插入图片描述
初步入门的小白,若文章出现问题,还请大佬指正。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个软件界面翻译的小工具,对于英文不好的同学应该会有点帮助。英文好的就不要看了。最因为是调用网页接口翻译,使用必须联网 ====================================================== 经过几天的反响,我更新了下软件,做个详细的使用情况吧 1。有好多人说,有的程序只能翻译极个别的按钮或者其他的,大部分不能翻译。这种情况是,因为软件是根据窗口句柄内容进行翻译,你的软件翻译不了,那就是无法获取你的软件的句柄,你的软件极有可能是自绘的或者其他未知。本人目前没有办法解决。(你可以采取截图识别翻译,再逐个对照) 2.有人说翻译的内容太牵强。因为是机器在线翻译,本人也无法解决。只能靠个人理解能力了。 3.有人说截图识别卡顿。因为截图有大小限制,你截的太小是不会上传的,太大又因为要识别的内容太多,所有卡慢。跟我软件没有关系,跟你的网速有关。 4.为了美观增加了皮肤和增加的一个划词翻译选项。 5.划词翻译选项尽量在必要时选中,不需要时取消勾选。因为原理和系统鼠标左右键操作有点冲突(问题不是太大)如果你不介意可以随意。 6.已翻译内容框,当你翻译好后点击要复制的时候,划词翻译会暂停9秒(这个时间段划词是不会有反应的。)过了9秒正常划词。当然你可以随时勾选界面上的划词开启的勾来操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值