PyQt5系列教程(六)如何讓界面和邏輯分離

軟硬件環境

  • OS X EI Capitan
  • Python 3.5.1
  • PyQt 5.5.1
  • PyCharm 5.0.3

前言

前面的內容咱們介紹了利用QtDesigner來設計界面,再經過命令行工具pyuic5將ui文件轉換成py源文件。不過因爲要響應事件操做,網網會將相應的槽函數寫在ui的py文件裏,這樣,界面和邏輯開發就混合在一塊兒了,每一次的ui更新都會伴隨着轉換後py文件的修改,想一想就知道煩人了。對於多人協做的項目,這樣的效率確定是低下的。本文就來介紹如何將這兩者剝離。api

實例講解

設計ui

首先用QtDesigner作一個簡單的界面mainwindow.ui, 在菜單欄上加入幾個子菜單markdown

ui轉換成py

利用pyuic5進行轉換app

pyuic5 -o ui_mainwindow.py mainwindow.ui

剝離ui和邏輯

新建一個mainwindow.py文件,建立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)

在這裏去綁定相應的signal和slot,實現業務邏輯,代碼結構也清晰多了。這樣,之後若是再遇到ui更新了,我只須要將更新後的ui文件替換,在轉換成py就能夠了,實現了ui和邏輯的分離。工具

main函數中調用

在main中實例化MainWindow,調用show方法顯示ui

if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())
相關文章
相關標籤/搜索