PyQt5系列教程(七)界面和逻辑分离

原文出处: https://xugaoxiang.com/2019/12/04/pyqt5-7-ui-logical/

软硬件环境

  • windows 10 64bit
  • Miniconda with python 3.7.1
  • PyQt5
  • PyCharm

前言

前面的内容我们介绍了利用QtDesigner来设计界面,再通过批处理脚本pyuic5.batui文件转换成python源文件。不过由于要响应事件操作,往往会将相应的槽函数写在uipy文件里(前面的示例就是这样),这样,界面和逻辑的开发代码就混合在一起了,每一次的ui的更新都会伴随着转换后py文件的修改,想想就知道很不合理了。对于多人协作的项目,这样的效率肯定是低下的。有鉴于此,本文就来介绍如何将这二者进行剥离。

实例讲解

设计ui

首先用QtDesigner做一个简单的界面mainwindow.ui, 在菜单栏上加入几个QAction

ui转换成py

利用pyuic5.bat进行转换

pyuic5.bat -o ui_mainwindow.py mainwindow.ui
剥离ui和逻辑

新建一个mainwindow.py文件,创建MainWindow


from PyQt5.QtWidgets import QMainWindow
from ui_mainwindow import Ui_MainWindow


class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)

        self.action_exit.triggered.connect(self.onExitTriggered)

        self.action_copy.triggered.connect(self.onCopyTriggered)
        self.action_paste.triggered.connect(self.onPasteTriggered)
        self.action_cut.triggered.connect(self.onCutTriggered)

在这里去绑定相应的signalslot,实现具体的业务逻辑,代码结构也清晰多了。这样,以后如果再遇到ui更新了,我们只需要将更新后的ui文件替换,再转换成py就可以了,实现了ui和逻辑的分离。

main函数中调用

main中实例化MainWindow,调用show方法显示


import sys

from PyQt5.QtWidgets import QApplication

from mainwindow import MainWindow

if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())

备注

为了便于保存记录,在Github创建了一个工程,地址是: https://github.com/xugaoxiang/learningPyQt5,后续会把所有的代码、文档以及博文链接都放在上面。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迷途小书童的Note

请博主喝矿泉书!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值