这是百(每天)年一次的比较有实(水)际(水)价(水)值(水)的编程技术文章
事情要从一个周前的那个星期五说起。。。
早晨班主任找到我说:“听说你会编程啊?昨天我在群里发的那个文档你看到了吗?”
我一脸懵:“啥文档?”
班主任:“那个什么编程比赛的,回家看一看,那你去参加吧,就怎么定了啊!”
于是呢我就勉强答应了班主任。。。
文档里就是讲了一些这次编程比赛的时间限制(一个周末),比赛项目(我参加的是程序设计)
我决定使用我所唯一学过的编程语言python完成这次比赛(其实html我也会一些,可是又没有网页设计比赛)
另外我也是第一次使用python进行编程比赛(以前只参加过一次scratch的蓝桥杯)
于是呢,我两天的爆肝开始了
🌙周五的晚上
第一个晚上,我想好了作品主题并完成了作品UI设计
大概是做一个便携工具安卓app
这里放出我那天晚异想开天的一部分设计图
设计完后,我马上就把图发给老师
以下是老师的建议:
1.把python打包成安卓apk是一个复杂繁琐的过程,还不如干脆直接做成电脑软件,再说安卓app也不符合比赛的要求
2.根据上面一条建议,修改UI
于是稍加改动,我把UI改成了这样:
累死了
0点多了
先睡吧
⛅星期六
一大早(其实是上午10点),起了床
今天任务是做功能
明天再把界面完成
打开VS code
深思了自己目前的编程水平
才决定先把简单的功能写完
功能一 垃圾分类
这也算是非常简单的一个功能
写个分支语句就能完成
于是我分分钟写了以下代码:
1 |
|
功能二 体质计算
这应该也不难
首先打开咱们的某度
找到了体质计算公式:
体质指数(BMI)=体重(kg)÷身高^2(m)
还有对比标准:
| BML<18.5 | 18.532 |
| :——: | :———–: | :——-: | :——-: | :——: |
| 过轻 | 正常 | 过重 | 肥胖 | 非常肥胖 |
又是一个分支语句:
1 |
|
功能三 随手记
所谓随手记就是只有一个页面的备忘录,可记录笔记和作业,也可以记录一些生活中的重要事情,防止忘记
该功能我的构思如下:
用户输入的内容后,会在本地新建一个txt文件,然后会把获取到的内容替换进去,再次打开应用时,程序会获取该txt文档里的内容,显示在输入框中
于是呢,我翻了翻我的书
得知如何保存内容:
1 |
|
其中filename变量是文件的绝对路径
然后读取文件内容可以这样:
1 |
|
contents变量是获取到的内容
明白了怎样读取和编辑文件内容
实现随手记也就不难了
功能四 文字朗读
就像题目所说的那样,程序会获取到输入的文字,然后朗读出来
可能你会疑惑:这好像没什么用?
这个功能的目的是造福部分不识字的老年人和某些视障人士
然后你会吐槽:这然道不**吗,想要朗读文字不应该先输入文字吗,不识字的老人会打字吗?
所以,我添加了自动粘贴功能,你只要把别人发给你的文字短信内容复制下来,打开软件,程序就会自动将剪贴板中的内容粘贴在文本框下,只要轻点朗读,就OK了
再次打开某度,
根据资料写了以下代码
1 |
|
nr变量是你输入的文字内容
功能五 英语词典
这应该是所有程序中最难实现的一个
我的构思如下:
点击搜索时,程序获取到输入框中你输入的英语单词,先会到本地词库检索单词,如果没有检索到该单词,就会调用有道词典的api检索单词
会使用到bs4对html对网页进行解析
这里有篇参考文章,这里就不多讲了:点击直达
其它
虽然我已经做出来了我的剪贴板功能了,但想想作用不大,也不可能要求用户一直开着软件,所以就取消了该功能
🌞星期日的一天爆肝
接下来就是最难的一个环节了:做界面
一个软件不仅要有好功能,还要有对用户友善的界面
经过几十分钟的网络查询
我找到了一个可以说较为满意的做界面的python库——tkinter
引入tkinter,取别名tk
1 |
|
建立软件窗口
1 |
|
这里相当于html中的<head>标签
我的窗口大概分三个布局是“frameTop”(顶部标题栏)“frameLeft”(左侧功能栏)“frameMain”(中间区域,主窗口)
那让我们再建立一个<body>标签(就是名字是body的函数)
插入内容
1 |
|
建立三个布局
分别定位三个布局(pack)
side:位置
expand:是否扩展
fill:填充
完成这些就可以开始做各个功能的界面了
根据之前的设计,左侧栏(frameLeft)放按钮,中间部分(frameMain)就是功能界面
每次点击左侧栏(frameLeft),都能够清空中间部分(frameMain)的内容,再显示要显示的内容
1 |
|
将这一行代码写入函数就可以实现啦
tkinter库的模块也挺丰富的
比如:
文本框
1 |
|
按钮
1 |
|
单行 文本/输入 框
1 |
|
多行 文本/输入 框
1 |
|
有了这四个模块就够完成这个程序了
最后再把昨天写好的功能代码安装上去就行了
过程也不是很复杂
就先省略了吧,不具体说明了
一直到晚上九点,才把所有写好
等等,UI美化呢?
啊,完全来不及啦
明天就要交啦
而且自带UI的按钮丑死了
放几张库自带UI和我设计的UI对比图吧
按钮:
单行输入框:
多行文本框:
az。。。。
总体对比:
就这!就这!就这!
最后把应用主题配色改成蓝的才比较满意
反正比原来自带灰底的好,像极了win98的风格
明天就要交作品了
希望“功夫不负有心人”吧
**比赛期间不能放出成品下载链接,所以想体验我作品的话以后再说吧