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中的各种装饰器详解
Apr 11 Python
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
Apr 25 Python
再谈Python中的字符串与字符编码(推荐)
Dec 14 Python
Python命令启动Web服务器实例详解
Feb 23 Python
python调用tcpdump抓包过滤的方法
Jul 18 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
Dec 26 Python
python三方库之requests的快速上手
Mar 04 Python
提升Python效率之使用循环机制代替递归函数
Jul 23 Python
python实现高斯判别分析算法的例子
Dec 09 Python
Python 简单计算要求形状面积的实例
Jan 18 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
Jul 20 Python
Python之多进程与多线程的使用
Feb 23 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
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
jQuery回调方法使用示例
2017/06/26 jQuery
nodejs动态创建二维码的方法
2017/08/12 NodeJs
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
微信小程序自定义tabBar的踩坑实践记录
2020/11/06 Javascript
[01:18:43]2014 DOTA2华西杯精英邀请赛5 24 iG VS DK
2014/05/25 DOTA
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
python递归下载文件夹下所有文件
2019/08/31 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
四方通行旅游网:台湾订房、出国旅游
2017/09/20 全球购物
播音主持女孩的自我评价分享
2013/11/20 职场文书
学生会主席事迹材料
2014/01/28 职场文书
大学生职业生涯规划书参考模板
2014/03/05 职场文书
2014年学校教学工作总结
2014/12/06 职场文书
生日答谢词
2015/01/05 职场文书
房地产销售助理岗位职责
2015/04/14 职场文书
中学语文教学反思
2016/02/16 职场文书
导游词之嵊泗列岛
2019/10/30 职场文书