PyQt5界面设计与逻辑分离

Posted 摸爬滚打的程序媛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyQt5界面设计与逻辑分离相关的知识,希望对你有一定的参考价值。

PyQt5界面设计与逻辑分离

前言

开发环境:PyCharm
界面设计:QtDesigner
使用QtDesigner来设计界面的时候,为了开发方便,往往需要将UI与逻辑处理分离,下面就介绍2种方式。

方法一(传统、不方便)

开发流程:
1、使用QtDesigner进行界面设计,保存为xxx.ui文件
2、在Pycharm中使用PyUIC生成xxx.py文件
3、新建.py文件,编写代码,调用生成的xxx.py文件

缺点: 一旦.ui界面更新,需要重新将.ui文件PyUic成.py文件
  • 1、使用QtDesigner进行界面设计,保存为main_window.ui文件

  • 2、在Pycharm中使用PyUIC生成main_window.py文件

  • 3、新建main_window_control.py文件,编写代码,调用生成的xxx.py文件y

  • main_window_control.py代码如下:

from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget
import sys

# 从designer目录下的main_window.py文件中导入 “类 UiMainWindow”
from designer.main_window import Ui_main_window


# UI逻辑处理类
class ControlMainWindow(QMainWindow, Ui_main_window):
    # 初始化函数
    def __init__(self):
        print("ControlMainWindow--> __init__()")
        super().__init__()
        # Ui_main_window类 初始化
        super(ControlMainWindow, self)
        # Ui_main_window类 调用setupUi()
        self.setupUi(self)

        # 按钮
        self.pBtnSelectFile.clicked.connect(self.__selectFile)

    # “选择文件”按钮
    def __selectFile(self):
        print("ControlMainWindow--> __selectFile()")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ui = ControlMainWindow()
    # 主窗口标题
    ui.setWindowTitle("摸爬滚打的程序媛--UI逻辑分离方法一")
    ui.show()

    sys.exit(app.exec_())

方法二(推荐、方便)

开发流程:
1、使用QtDesigner进行界面设计,保存为xxx.ui文件
2、 新建.py文件中,编写代码,直接调用xxx.ui文件

  • 1、使用QtDesigner进行界面设计,保存为main_window.ui文件
  • 2、 新建main_window.py文件中,编写代码,直接调用main_window.ui文件
  • main_window.py代码如下:
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5 import uic
import sys


class CusMainWindow:
    def __init__(self):
        print("CusMainWindow--> __init__()")
        # 从文件中加载UI定义
        ui_path = "main_window.ui"
        self.ui = uic.loadUi(ui_path)
        print(type(self.ui))  # <class 'PyQt5.QtWidgets.QMainWindow'>
        # 设置窗口标题
        self.ui.setWindowTitle("摸爬滚打的程序媛--UI逻辑分离方法二")
        # 初始化窗口里UI控件信号
        self.ui.pBtnSelectFile.clicked.connect(self.selectFile)

    # “选择文件”按钮
    def selectFile(self):
        print("CusMainWindow--> __selectFile()")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    cusMainWin = CusMainWindow()
    cusMainWin.ui.show()
    app.exec_()

以上是关于PyQt5界面设计与逻辑分离的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5界面设计与逻辑分离

PyQt5中编程与界面设计分离的两种方式(UI逻辑分离)

Pyqt5小案例,界面与逻辑分离的小计算器程序

PyQt5 - 将逻辑与 ui 分离导致功能无法正常工作

PyQt5系列教程如何让界面和逻辑分离

4. PyQt5-实现显示和业务逻辑分离