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之集合的关系
Sep 24 Python
介绍Python中的一些高级编程技巧
Apr 02 Python
用Python中的wxPython实现最基本的浏览器功能
Apr 14 Python
Python 提取dict转换为xml/json/table并输出的实现代码
Aug 28 Python
python 全文检索引擎详解
Apr 25 Python
Python入门之三角函数sin()函数实例详解
Nov 08 Python
flask + pymysql操作Mysql数据库的实例
Nov 13 Python
用tensorflow实现弹性网络回归算法
Jan 09 Python
python Pandas库基础分析之时间序列的处理详解
Jul 13 Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 Python
python 将列表里的字典元素合并为一个字典实例
Sep 01 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 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 mssql 数据库分页SQL语句
2008/12/16 PHP
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
ThinkPHP之R方法实例详解
2014/06/20 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
Javascript 代码也可以变得优美的实现方法
2009/06/22 Javascript
Javascript 读书笔记索引贴
2010/01/11 Javascript
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
JS中数组Array的用法示例介绍
2014/02/20 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
Python中文件遍历的两种方法
2014/06/16 Python
python数字图像处理之高级滤波代码详解
2017/11/23 Python
Python实现图片识别加翻译功能
2019/12/26 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
如何利用Python识别图片中的文字
2020/05/31 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
css3进阶之less实现星空动画的示例代码
2019/09/10 HTML / CSS
行政办公员自我评价分享
2013/12/14 职场文书
生产部经理岗位职责
2013/12/16 职场文书
医学生职业规划范文
2014/01/05 职场文书
创先争优承诺书范文
2014/03/31 职场文书
抽奖活动主持词
2014/03/31 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python