在上一篇博客Python界面库-PyQt5初探中留了一个坑,那就是如何利用Qt的Designer设计出的UI文件。本篇博客就来研究这个问题。请注意:这里只是讲如何使用Ui文件,而不会讲如何设计Ui文件,如何需要学习如何设计Ui的话,请移步到Qt5 GUI编程之类的话题去。
一、Qt的方式
使用过Qt,尤其是在visual studio中使用过Qt的应该知道,在编码的过程中Qt会对一些特殊文件进行处理,具体如下图所示:
- Designer设计出的以后缀ui结尾的文件,这类文件Qt会使用uic工具进行处理,生成包含空间和布局的ui_xxx.h的c++头文件。
- 资源文件,Qt可以使用图片等资源文件,这样就可以在程序中使用相对路径,并且可以把这些图片资源打包在程序中,而使用户无法见到。资源文件的后缀名是.qrc,经过rcc工具出来后,生成文件qrc_xxx.cpp,c++的实现文件即完成资源的数据化工作。
源码文件处理。Qt处理的源码文件是有要求的,即对应的需要定义Qt宏Q_OBJECT,这个就是元对象系统moc发挥作用的地方,Qt的信号槽机制的处理就是在moc中进行的,因为如果没有加Q_OBJECT,那么就不能进行moc处理,也就无法使用信号槽机制。
在Python中,我们也可以使用这个流程来完成Qt UI文件的处理。来看实例。
1.1、使用Designer设计Ui文件
这里设计了一个简单的登陆窗口,文件名为Login.ui,如图:
1.2、uic处理ui文件
在安装的PyQt5中有uic工具,在%PythonRoot%Python36/Scripts/pyuic5.exe。在命令行中输入如下命令
pyuic5.exe -o ui_Login.py Login.ui
处理完成后会在同目录下生成问价ui_Login.py。这个文件和上面说到的c++头文件ui_xxx.h是一致的,只不过是Python的版本而已。1.3、编写使用ui_Login.py的Pythone文件Login.py
文件Login.py如下: