PyQt和Qt Designer符合MVC开发模式,做到显示和业务逻辑的分离,以下是PyQt的简单配置记录。
PyQt学习记录
S1:MVC开发模式
S1.1 MVC模式构成
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式,这种模式用于应用程序的分层开发。
- Model(模型) - 模型代表的是一个存取数据的对象。它也可以带有逻辑,在发生数据变化时更新控制器。
- View(视图) - 视图用来显示,代表模型包含的数据的可视化。
- Controller(控制器) - 控制器作用在模型和视图上,它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

S1.2 实现
例如创建一个名为 Student 对象的模型,StudentView 是一个把学生详细信息传输到控制台的视图类,StudentController 负责存储数据到 Student 对象中的控制器类,并会相应地更新视图 StudentView。
MVCPatternDemo,我们的演示类使用 StudentController 来演示 MVC 模式的用法。

S2:下载安装
使用PyQt需预先安装 PyQt Designer 和 PyQt5 ,开发工具采用 Pycharm Community ,环境下载地址:
- PyQt Designer 用于设计View试图:下载
- PyQt5环境用于编辑后台逻辑, Anaconda安装PyQt环境:Anaconda 下载
S3: 快速入门
S3.1 新建筑窗口
打开 Qt Designer 的界面,最常用的是 Widget(通用窗口) 和 Main Window(主窗口)。

S3.2 窗口主要区域介绍
以下对窗口中包含的诸多区域功能进行介绍:

- 【区域1】Widget Box 工具箱 提供很多空间,每个空间都有自己的名称,提供不同功能,例如:按钮、单选钮、文本框等。再菜单栏选择 “”窗体“”=>"预览”,或者按“ctrl+R”快捷键,可以看到窗口的预览效果。
- 【区域2】主窗口区,能够直接从工具区直接拖拽功能框到窗口。
- 【区域3】对象查看器,可以查看主窗口中仿制的对象列表;
- 【区域4】属性编辑器,提供对窗口、空间、布局的属性编辑功能,如
| 名称 | 功能 |
|---|---|
| objectName | 控件对象名称 |
| geometry | 相对坐标系 |
| sizePolicy | 控件大小策略 |
| minimumSize | 最小宽度、高度 |
| maximumSize | 最大宽度、高度 |
| font | 字体 |
| cursor | 光标 |
| windowTitle | 窗口标题 |
| windowsIcon、Icon | 窗口图标、控件图标 |
| iconSize | 图标大小 |
| toolTip | 提示信息 |
| text | 控件文本 |
| shortcut | 快捷键 |
- 【区域5】信号、槽编码器、动作编辑器和资源浏览器,信号、槽编辑器可为控件添加自定义信号和槽函数,资源浏览器可谓控件添加图片。
S3.3 查看UI文件
Qt Designer默认文件为 .ui 文件,描述窗口中空间的属性和布局,.ui 文件中包含的内容是XML(可扩展标记语言)格式。
从图中可得到,属性编辑器和文档信息是一致的。

S3.4 将.ui文件转为.py文件
有多种方式将 .ui 文件转为 .py 文件,例如这里通过命令行转换文件"firstMainWin":
pyuic5 -o firstMainWin.py firstMainWin.ui
关于pyuic5命令可到官网查看,此外还可通过python脚本和Eric IDE转换.ui到.py文件。
S3.5 界面与逻辑分离
用来显示界面的.py文件由.ui文件转化而来,因此每次修改.ui文件会造成.py文件改变。
程序需要新建一个.py文件调用界面文件,这个文件叫逻辑文件,这样实现了界面与逻辑的分离。
例如构建一个 CallFirstMainWin.py 文件,并继承界面文件的主窗口类即可,如:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from firstMainWin import *
class MyMainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MyMainWindow, self).__init__(parent)
self.setupUi(self)
if __name__ =="__main__":
app = QApplication(sys.argv)
myWin = MyMainWindow()
myWin.show()
sys.exit(app.exec_())
参考内容:
- 《PyQt5快速开发与实战》
- MVC开发 | 菜鸟教程
- pycharm 调用 pyqt
本文介绍了PyQt结合QtDesigner实现MVC模式的方法,包括模型、视图、控制器的概念及其实现过程。同时,提供了PyQt的安装指南、QtDesigner的基本操作及.ui文件转.py文件的步骤。
591

被折叠的 条评论
为什么被折叠?



