欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入免费知识星球。

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

PyQt5开发 迷途小书童 4年前 (2019-12-04) 6482次浏览 0个评论

软硬件环境

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

前言

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

实例讲解

设计ui

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

pyqt5

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

pyqt5

备注

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

喜欢 (0)

您必须 登录 才能发表评论!

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

请关闭 Adblock 等类似浏览器插件,然后刷新页面访问,感谢您的支持!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.