程序猿——踩bug之路

![]()从开始这就是一个新的坑,还好今天我们爬上了;

带着Ui界面的编程,最想感谢的是我的搭档乔美萱;此处我觉得需要掌声和尖叫,一路带我从走到飞;

一、结对编程项目:带UI的小初高数学学习软件

1、用户注册功能。用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册;

2、用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功。密码6-10位,必须含大小写字母和数字。用户在登录状态下可修改密码,输入正确的原密码,再输入两次相同的新密码后修改密码成功;

3、密码设置成功后,跳转到选择界面,界面显示小学、初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量;

4、用户输入题目数量后,生成一张试卷(同一张卷子不能有相同题目,题目全部为选择题),界面显示第一题的题干和四个选项,用户选择四个选项中的一个后提交,界面显示第二题,...,直至最后一题;

5、最后一题提交后,界面显示分数,分数根据答对的百分比计算;

6、用户在分数界面可选择退出或继续做题;

7、小初高数学题目要求见个人项目。

二、实验过程 +环境搭建

我们使用的是python语言;在做图形界面的时候使用软件pyqt5+eric6;当然这是一个从无到有的壮丽史诗级成就,别激动这是对我们而言;从一开始以为最难的是短信接口的调用,做完之后才发自己就是个傻;没错自己以为是最难的其实并没有;

环境配置,软件安装;啥都不说都是泪,生命的美好在于多参考链接。。。。。

[pyqt5+eric6+anacode] https://blog.csdn.net/FenDouZuoQingChun/article/details/87934174

还有记得安装的版本设置,具体的我找不到链接的;

三、使用初体验

这个软件用起来就是爽歪歪,但是安装真的是血泪坑;pyqt5是qt的衍生产品,所以勒使用没有太大的差别,妥妥拽拽美滋滋

这是designer界面,在这里可以拖拽控件

![]()

这是eric6界面,在这里可以生成代码

![]()

四、骄傲的界面成就达成

同样不说话,上图(背景是我们自己设计的呢)

![]()

![]()

![]()

![]()

![]()

五、心路历程

1.开始的时候自己真的整个人不好了,还好队友的坚持不懈,这点我就很应该向她学习。自己真的是太颓丧,以后不论发生什么我要加油去试试;我相信自己会越来越棒

2.从开始之初,界面的跳转问题自己纠结了很久没有结果,后来才知道只需要一段函数的调用;

def on_pushButton_2_clicked(self):<br></br>        """<br></br>        点击按钮进行链接跳转<br></br>     Slot documentation goes here.<br></br>        """<br></br>        # TODO: not implemented yet<br></br>        #raise NotImplementedError<br></br>        import registerone<br></br>        self.next=registerone.Dialog1_5()#调用下一个界面<br></br>        self.close()<br></br>        self.next.show()

3.逻辑代码和界面代码分离,主要是eric6自动生成代码直接调用是错的,让我整个人都不好了;后来也是仔细了解整个函数懂得原因;

4.对于公式的生成我们采用队友的个人项目中的公式生成函数;

5.计算结果进行比较的时候,这里才是险象环生;我写的逻辑代码,调用函数eval()直接计算结果;这里一开始自己机子上试很多的结果都是正确的,但是在队友自动生成公式后猜错的离谱,没有一次是对的,然后我们真的调了一下午的bug;传递的公式包含不能自动计算的=好,去括号没有去完全;边界条件没有考虑,等等真的是无厘头的错误着;

6.插入短信接口的时候,才发现这里是最幸福的时刻;开始的时候自己申请阿里云账号,把短信需要的模板签名 密钥密匙一条龙服务全部搞定;所以我们只需要添加这些东东在从函数直接调用即可;

7.导出exe文件的时候自己依旧是错误的,后来发现只需要添加一段代码即可,(没有原因插入即可):

import sys, os
if hasattr(sys, 'frozen'):
    os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH']
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import pyqtSlot

特别感谢:

https://blog.csdn.net/shangxiaqiusuo1/article/details/81035046

https://blog.csdn.net/ZhangWanyu\_/article/details/84930159

https://blog.csdn.net/weixin\_34146805/article/details/86075695

https://blog.csdn.net/u013419318/article/details/84657117

https://blog.csdn.net/j497205974/article/details/80799461

https://blog.csdn.net/zwyact/article/details/99778898

(记得还有一些当时没有保存,嘿嘿(●ˇ∀ˇ●))

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。