1.实验内容
1.设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善;
2.考核基本语法、判定语句、循环语句、逻辑运算等知识点;
2.实验过程及结果
1.在上个学期的网络空间安全导论课程中,已经完成过用python编写一个简单的计算器的任务,但是这次实验,还是试试新写一个更符合要求的好了。
2.回想当初编写这个程序时,首先便是不知道如何创建界面和按钮以及显示文本,所以也还是去csdn上寻找答案,后来发现了tkinter库,所以现在在编写含有UI界面的程序时,也都还是会使用tkinter库。(后来经刘子谦大佬指点,发现了QtDesigner这个软件,可以更加直观方便地创建界面)
3.在完成这些UI界面的设计后,就是要对按键进行添加函数来进行运算。这一点还是比较好实现的。但是考虑到我平时在使用计算器时并不是使用鼠标点击屏幕上的按钮来运算,而是直接从键盘上键入来添加数字和运算符,但是这还是有点不太好操作,所以先放着先,等什么时间有空了再做calculator2.0。
4.如何将输入的数字和运算符显示在界面上,而且还要实时变化,并且是在输入了’=‘后再计算结果,的确是十分讨厌的,没办法,虽然我不是大智,但是可以做到若愚。还是先从看看别人的代码模仿开始。
5.最后就是整个程序的调试和运行了。对于我来说,界面设计并不是头痛的事,烦人的是运算符号,而且就算使用函数,还是会很麻烦。所以在查找资料的时候,发现了很多代码都极其简单,甚至没有出现运算的函数,细细看看,自习查查,我发现了’command=lambda‘这个至关重要的匿名函数,匿名函数不需要通过return来返回值,表达式本身就是返回值。所以这样一来,整个代码就变得很简单。虽然这个匿名函数看着对初学者不太友好,但是不得不说一句:
匿名函数tql~
3.实验中遇到的问题和解决过程
Q1:对于UI界面设计不熟悉PyQt5,导致一些Qt的函数用不惯。
A1:想起前段时间写的FASS程序,我是用tkinter和tkinter.message进行界面设计的,所以还是选择了自己较熟悉的tkinter来进行编程,其实效果还是差不多的。同时在csdn和博客园等网站上搜索了大量的信息,基本熟悉了tkinter下的label、button、title等的运用。
Q2:没有在非pygame下运用过sys库
A2:构建想法时想到当初改写Alien-Invasion时时调用了sys库,好像还是挺简单的,回去看了看,突然发现当时完全是在pygame.event下获取键入信息。所以还是一样,开始到搜索引擎上去寻找各种信息。
Q3:使用window.mainloop时并不能把全部窗口都关闭,导致有些时候需要关好几次才行,简直无法用语言形容测试时的烦躁。
A4还是好东西,经过大佬的指导,原来是需要root.mainloop()才可以。学到了学到了。
4.其他
python之所以受到广泛的欢迎,一个十分重要的原因就是python的第三方库太多太强大了,所以在搜索资料的时候发现其实通过tkinter内置的函数就已经可以完成基本的计算器任务。以后还是要站在巨人的肩膀上看看。