【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_()

请添加图片描述

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值