用 python+tkinter+有道云API 写一个自用的背单词软件

目录

导语

程序功能

需要用的工具

需要安装的python包

程序代码

功能类函数Functions

键盘响应

窗体设置

Sql连接

Gui程序打包

结语

参考文献


导语

最近在学英语,新单词需要反复背,所以就想写一个可以自己存储单词的应用。在开始写之前搜索了一下有没有人已经做好了,只查到一篇文章有比较相关的思路,但是功能只有随机抽取单词,以及需要从外部构建好CSV表格导入进去,不够方便,所以得自己写了。刚好tkinter也一直没有学过,就趁这次的机会边学边写。

程序功能

程序主要分为三个功能区,分别是:

Search模块:用于检索词库中的单词

Upload模块:用于向词库加入新单词

Next模块:用于背单词,由Next和Answer两个按键共同实现

最后呈现的功能如图所示:

用 python+tkinter+有道云API 写一个自用的背单词软件

需要用的工具

python 3.6

postgreSQL(用于存储词库,也可以用excel,但是响应速度慢,个人不建议)

需要安装的python包

tkinter:构建python中的Gui窗体

sqlalchemy:用于sql的连接

playsound:播放单词发音

urllib.request:从有道的API接口获取单词发音

pyinstaller:将py文件打包成exe

程序代码

程序的整体结构如图所示

用 python+tkinter+有道云API 写一个自用的背单词软件

功能类函数Functions

类Functions 是程序的功能集合,由Add_Words(新增单词),Next_Random(随机抽取单词)Play_Sound(播放单词发音)Search_Word(检索单词)Show_Answer(显示单词释义)五个子函数构成。

这部分遇到的几个问题汇总如下:

  1. 单词发音获取:有道API获取单词发音十分方便,直接通过API接口加单词访问,参数type表示美音(0)/英音(1),audio表示对应单词。本来希望通过爬虫直接实现连网播放,尝试未果,最后还是老老实实地将单词下载到本地文件夹,每次查询单词的时候调用playsound包实现MP3的发音播放。接口也支持词组,但是词组里有空格,在访问网页时,需要将词组中的空格替换为‘%20’.
  2. 发音包的选择:在实现发音功能的时候尝试了许多包,playsound, pyaudio, playgame等,许多包运行出错,playsound运行成功但是响应速度大概需要肉眼可见的0.5秒。这边可以再试一下其他的包效果是否会更好。

键盘响应

这一模块是使得可以用键盘按键控制程序,方便使用。主要用到的是tkinter的bind语句功能。

窗体设置

窗体设置由函数main实现,也是程序运行的主函数。本文用到的tkinter控件主要有Button,Text,Label和Enrty,网上有许多关于这几个控件的参数和功能的基本介绍,可以在使用前先了解。

写这一部分的时候,由于边写边学tkinter怎么用,再加上自己的强迫症,所以遇到了很多细节设置问题,找到了一些比较有用的网页:

  1. Button的字体设置:和Text可以直接在语句中设置字体不同,Button需要通过调用tkinter.font包实现字体设置;
  2. Button事件的参数传递:Button可以用command参数绑定对应的功能函数。在功能函数参数传递方面,我直接用global变量略去了参数传递的问题,有看到文章采用的是lambda函数进行传递,也可以尝试这种方法。
  3. 控件的布局:布局这部分花了最多时间来满足强迫症的需求。tkinter主要有三种布局方式,分别是pack, grid以及place。
  • pack也就是把控件作为组合进行摆放,但是控件组合(frame)内部位置不好调整,倒腾了很久还是放弃了;
  • place的参数是空间的像素坐标,设置起来比较麻烦,灵活度低;
  • grid也就是按照网格进行定位:把整个界面划分为若干块,再通过row和column两个参数确定控件的位置。可以参考这篇文章,解释得比较readable。 

来源:goaza123

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年3月16日
下一篇 2020年3月16日

相关推荐