前面的內容咱們介紹了利用QtDesigner來設計界面,再經過命令行工具pyuic5將ui文件轉換成py源文件。不過因爲要響應事件操做,網網會將相應的槽函數寫在ui的py文件裏,這樣,界面和邏輯開發就混合在一塊兒了,每一次的ui更新都會伴隨着轉換後py文件的修改,想一想就知道煩人了。對於多人協做的項目,這樣的效率確定是低下的。本文就來介紹如何將這兩者剝離。api
首先用QtDesigner作一個簡單的界面mainwindow.ui, 在菜單欄上加入幾個子菜單markdown
利用pyuic5進行轉換app
pyuic5 -o ui_mainwindow.py mainwindow.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中實例化MainWindow,調用show方法顯示ui
if __name__ == "__main__": app = QApplication(sys.argv) mainWindow = MainWindow() mainWindow.show() sys.exit(app.exec_())