获取更多文章和更新,请关注我的个人主页:leiting6.cn

写在前面

关于PyQt入门的教程网上并不缺少,说实话,真稀缺的还是比较进阶的教程。不过我自己也是自学Python到现在,并且使用PyQt写了几个小工具,感觉挺不错,所以从上手入门开始写。我的教程里面可能并不会非常系统和全面,只是觉得作为新手学习一门新的语言和工具,成就感是一件非常重要的事情!快速入门,从照猫画虎到举一反三再到自己独立编写出工具,是最能激发热情的。在此过程中,必定会学会查阅官方文档和网络文章来充实细枝末节的知识,认知体系也就自然系统、全面了。

为什么需要模块化?

模块化编程是每门编程语言都需要使用到的技能,好处呢就是方便管理,便于理清思路。

具体到本系列教程中简易计算器的设计,模块化的必要性又在哪呢?根据前面3篇文章的介绍,不出意外的话同学们也都能实现一个简单的加法器的功能了。我在自学PyQt5过程中,相当长一段时间里也都是按照这样的流程来编写代码的,甚至已经完成了几个小工具的设计。然而我自己也时常意识到自己会陷入一种窘境:只要想在QtCreator稍微改动一下UI界面,再利用pyuic5生成.py文件,就要重新再贴一遍自己添加的代码块,有首部import的、有中间自定义方法的、还有末尾的类外执行的...实在太麻烦了。

大家可能还记得,在介绍使用QtCreator的时候我也说过,QtCreator设计出来的是一个类,而类是面向对象语言的重要概念之一,python也不例外。类能干嘛呢?能用来实例化对象、能继承、能改写。至此,同学们估计也已经意识到了,为什么我们要用模块 --- 没错,我们要把pyuic5生成的.py文件作为模块,而自己手动编写的代码放到主程序中,调用模块,继承、改写它!

模块化操作

修改UI界面,重新生成.py文件

首先我们象征性的修改一下UI界面,假装是因为设计需要。如图,不增删控件的前提下,拖拽一下控件的位置、更改一下MainWindow的大小,效果如下:

image.png

然后再重新生成一下.py文件,为了不覆盖之前的main.py,我们这次重新取一个名字,让他看起来更像一个模块:

加入以后还要加入其它的模块,可以取名字为ui_subwindow、ui_subwidget等等。

打开ui_mainwindow.py发现和之前生成的main.py差不多。这一次我们就不改动它了,再同一个文件夹再新建一个空白的py文件,命名为calc.py。calc.py就是模块化之后的主程序文件。

为calc.py添加代码,显示程序界面

在calc.py中添加一下代码:

这段代码比较眼熟。没错,想要显示窗口,流程是没有变的,只是在calc.py中我们引入了ui_mainwindow包中的Ui_MainWindow类,重新命名为UIM,在下面的代码中,同样将UIM类实例化为ui,然后执行setupUi()方法,显示主窗口,等待退出。看不明白的需要补一下python基础知识。 保存后在命令行中执行:

可以看到:

image.png
改写Ui_MainWindow类

好了,接下来需要添加之前已经作过说明的后台逻辑代码。为了能模块化管理这个小工程,而且不改动ui_mainwindow.py,上面我们已经在calc.py中引入了Ui_MainWindow类。根据之前的经验,原初的Ui_MainWindowbi并不能实现加法操作,我们还需要改写它。所以,在calc.py中,新建一个类继承并改写Ui_MainWindow,calc.py全部代码如下:

执行calc.py简单测试一下功能,正常:

image.png

模块化之后,如果我们改动了.ui文件,尽管放心大胆地重新生成模块文件,只要不改动控件的名称,主程序都可以照常运行,是不是方便了很多?确实模块化的管理才是最科学的。

写在最后

这个系列的教程到此就结束了,后面会不定期补一些使用PyQt5的小技巧等等。环境大家留言,一起交流,一起进步。

分类: 代码相关

发表评论

电子邮件地址不会被公开。 必填项已用*标注

%d 博主赞过: