Python爬虫+Tkinter制作一个翻译软件的示例


Posted in Python onFebruary 20, 2021

今天咱们用Python爬虫和Tkinter界面来做一个翻译软件。

一、运行效果

软件实现功能:当我们输入英文或中文时,程序即可打印出来对应的译文,如图:

Python爬虫+Tkinter制作一个翻译软件的示例

二、实现方法

1. 爬虫部分

实现一键翻译最简单的方式就是爬虫,我们只需将要翻译的内容传入,然后将翻译的结果爬取下来呈现给用户即可。在本文中,我们选择的网站是有道翻译。

下图这个界面,你在左边输入文字,那么浏览器会把你输入的信息传输给服务器。再在右侧返回对应翻译结果。这就是一个典型的Post操作。

Python爬虫+Tkinter制作一个翻译软件的示例

由于之前我们的爬取都是采用的Get方式来获取数据的,并没有用过Post方式,所以这里简单给大家说一下怎么用python发送Post请求:

发送post请求分为表单类(x-www-form-urlencoded)和json(application/json)格式,data参数支持字典格式和字符串格式,建议使用字典格式,在使用json.dumps()方法把data转换为合法的json格式字符串,或者将data参数赋值给post方法的json参数,data以字符串格式传输需要注意的事项:

  1. 必须是json格式字符串,必须用双引号,k-v之家必须有逗号,布尔值必须是小写的true/false
  2. 不能有中文,直接传字符串不会自动编码

我们还是按F12打开开发者模式,发现传入的数据并没有在原网页中出现,所以判断这是一个使用异步刷新的网站,所以该URL,应该去XHR中寻找,在XHR中发现了我们传入的数据,如图:

Python爬虫+Tkinter制作一个翻译软件的示例

一切准备就绪了,可以开始书写代码了,爬虫部分代码如下:

url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
#使用post需要一个链接
data={'i': word,
  'from': 'AUTO',
  'to': 'AUTO',
  'smartresult': 'dict',
  'client': 'fanyideskweb',
  'doctype': 'json',
  'version': '2.1',
  'keyfrom': 'fanyi.web',
  'action': 'FY_BY_REALTIME',
  'typoResult': 'false'}
#将需要post的内容,以字典的形式记录在data内。
r = requests.post(url, data)
#post需要输入两个参数,一个是刚才的链接,一个是data,返回的是一个Response对象
answer=json.loads(r.text)
#你可以自己尝试print一下r.text的内容,然后再阅读下面的代码。
result = answer['translateResult'][0][0]['tgt']
return result

2.Tkinter部分

Tkinter是Python的标准GUI库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。

由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 能应付自如。

代码如下:

self.window = Tk()
self.fanyi = YouDaoFanyi()
self.window.title(u'翻译器')
#设置窗口大小和位置
self.window.geometry('310x370+500+300')
self.window.minsize(310,370)
self.window.maxsize(310,370)
#创建一个文本框
self.result_text1 = Text(self.window,background = 'azure')
self.result_text1.place(x = 10,y = 5,width = 285,height = 155)
self.result_text1.bind("<Key-Return>",self.submit1)
#创建一个按钮
#为按钮添加事件
self.submit_btn = Button(self.window,text=u'翻译',command=self.submit)
self.submit_btn.place(x=205,y=165,width=35,height=25)
self.submit_btn2 = Button(self.window,text=u'清空',command = self.clean)
self.submit_btn2.place(x=250,y=165,width=35,height=25)
#翻译结果标题
self.title_label = Label(self.window,text=u'翻译结果:')
self.title_label.place(x=10,y=165)
#翻译结果
self.result_text = Text(self.window,background = 'light cyan')
self.result_text.place(x = 10,y = 190,width = 285,height = 165)

来看看效果图:

Python爬虫+Tkinter制作一个翻译软件的示例

虽然有一些单调,但是能做到这样还是很不错的。

三、打包

做好程序后,可以将其打包,这样以后不管电脑上有没有python环境,我们都可以使用这个软件来进行翻译,下面来教大家一个简单的python打包方法。

首先安装PyInstaller第三方库。

pip install Pylnstaller

然后使用cmd,切换到需要打包的python程序的存储目录,然后输入该语句即可完成打包。

pyinstaller -F -w xxx.py

以上就是本文的全部内容了,希望能够对大家的学习起到一定的帮助作用!

四、代码获取

https://github.com/bigtigeryo/yingyihan

以上就是Python爬虫+Tkinter制作一个翻译软件的示例的详细内容,更多关于python 制作翻译软件的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
实例讲解Python中的私有属性
Aug 21 Python
Python random模块常用方法
Nov 03 Python
进一步了解Python中的XML 工具
Apr 13 Python
Python PyQt5实现的简易计算器功能示例
Aug 23 Python
Python文件的读写和异常代码示例
Oct 31 Python
python去重,一个由dict组成的list的去重示例
Jan 21 Python
Python实现序列化及csv文件读取
Jan 19 Python
Python版中国省市经纬度
Feb 11 Python
如何用Anaconda搭建虚拟环境并创建Django项目
Aug 02 Python
PyTorch 如何检查模型梯度是否可导
Jun 05 Python
使用python+pygame开发消消乐游戏附完整源码
Jun 10 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 Python
python爬虫用request库处理cookie的实例讲解
Feb 20 #Python
python 多线程爬取壁纸网站的示例
Feb 20 #Python
python 制作网站小说下载器
Feb 20 #Python
如何用python爬取微博热搜数据并保存
Feb 20 #Python
python 统计list中各个元素出现的次数的几种方法
Feb 20 #Python
pandas统计重复值次数的方法实现
Feb 20 #Python
pandas 按日期范围筛选数据的实现
Feb 20 #Python
You might like
PHP连接Access数据库的方法小结
2013/06/20 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
mouse_on_title.js
2006/08/25 Javascript
Javascript 篱式条件判断
2008/08/22 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
2017/11/14 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
微信小程序吸底区域适配iPhoneX的实现
2020/04/09 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
python3使用SMTP发送HTML格式邮件
2018/06/19 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
python爬虫之验证码篇3-滑动验证码识别技术
2019/04/11 Python
Python中输入和输出(打印)数据实例方法
2019/10/13 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
如何解决python多种版本冲突问题
2020/10/13 Python
Django中ORM的基本使用教程
2020/12/22 Python
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
介绍一下UNIX启动过程
2013/11/14 面试题
金融专业个人的自我评价
2013/10/18 职场文书
外贸主管求职简历的自我评价
2013/10/23 职场文书
金融行业务员的自我评价
2013/12/13 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers
Django项目如何正确配置日志(logging)
2021/04/29 Python
Python深度学习之实现卷积神经网络
2021/06/05 Python
详解JAVA的控制语句
2021/11/11 Java/Android