本次介绍PyQt5 GUI应用程序框架组成,以dialogApp项目文件组成为例,其他类似。
主要做两件事情:1、窗体UI设计,主要在Qt Designer内完成;2、对应窗体业务逻辑类功能实现,在myDialog.py文件内编写实现代码。
1、Python运行程序时会自动生成的临时文件夹_Pycache_。
2、QtApp是创建Qt C++ GUI项目Qt App所在的文件夹。\QtAPP\images目录下是Qt项目资源文件用到的图标和图片文件位置。Qt项目文件是QtApp.pro,窗体文件是Dialog.ui。
3、子文件夹QtApp下文件Dialog.ui是在Qt Creator里设计的窗体UI文件,在完成可视化窗体设计后将其覆盖dialogApp文件夹内的同名文件。每次在QtApp项目里修改了窗体文件后,应该将新的文件复制到此处并覆盖原有文件,文件内类名称为Ui_Dialog。
4、将窗体文件Dialog.ui编译转换为相应的python类定义文件,文件ui_Dialog.py是用pyuic5对文件Dialog.ui编译转换得到的python程序文件。
备注:文件uic.bat是一个批处理文件,用于复制Dialog.ui文件,并用pyuic5指令编译Dialog.ui文件而生成文件ui_Dialog.py。该命令包括了第3步复制命令,因此以上覆盖操作可省略。同时需要使用pyrcc5.exe工具将资源文件res.qrc编译为一个对应的Python文件 res_rc.py,编译后必须是原文件名后加”_rc”。res_rc.py文件里存储了图标的十六进制编码数据及相关的管理代码。
uic.bat脚本
copy .\QtApp\Dialog.ui Dialog.ui
pyuic5 -o ui_Dialog.py Dialog.ui
pyrcc5 .\QtApp\res.qrc -o res_rc.py #当文件多于一个或UI文件名不同,可根据需要修改文件内容
可在 PyCharm中设置快捷命令,具体可参考博客-PyCharm中如何使用Qt Designer
https://www.jianshu.com/p/1b2e6237eb3d
5、文件myDialog.py是一个对窗体进行业务逻辑操作的类的文件,文件内类的名称QmyDialog。
6、 文件appMain.py是创建应用程序和QmyDialog类窗体对象的实例,显示窗体并运行的主程序。当一个应用程序有多个窗体,并且窗体之间有数据传递时,appMain.py负责创建应用程序的主窗口,使整个应用程序结构清晰。
项目模板
from PyQt5.Qt import *
from ui_Dialog import Ui_Dialog
class QmyDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent) # 调用父类构造函数,创建窗体
self.ui = Ui_Dialog() # 创建UI对象
self.ui.setupUi(self) # 构造UI界面
## ============自定义功能函数========================
## ===========event处理函数==========================
## ========由connectSlotsByName()自动与组件信号关联的槽函数=========
## ==========自定义槽函数===============================
## ============窗体测试程序 ============================
if __name__ == "__main__":
import sys
app = QApplication(sys.argv) # 创建GUI应用程序
form = QmyDialog() # 创建窗体
form.show()
sys.exit(app.exec_())
# -*- coding: utf-8 -*-
## GUI应用程序主程序入口
import sys
from PyQt5.QtWidgets import QApplication
from myDialog import QmyDialog
app = QApplication(sys.argv) #创建GUI应用程序
##icon = QIcon(":/icons/images/app.ico")
##app.setWindowIcon(icon)
mainform=QmyDialog() #创建主窗体
mainform.show() #显示主窗体
sys.exit(app.exec_())
窗体常用类是QWidget、QDialog和QMainWindow。至此我们了解到了整个项目基本代码框架组成,后面将学习的重点放在界面控件、类的各种接口属性和函数使用以及业务逻辑功能的实现上,接下来可以愉快地开发自己的GUI应用程序了。