Python3+pyQT5項目筆記(三)- 項目編程基本流程

  • 項目編程基本流程
  1. 創建項目

選擇Create New Project,輸入項目名稱TemplatePrint,見下圖,注意要Base interepter要選擇系統中的python,並勾選Inherit global site-pakages和Make available to all projects。不勾選Inherit global site-pakages的話,有時系統會出現找不到pyQT5庫的現象。然後按Create創建pycharm項目。

  1. 使用designer設計界面文件

項目創建完畢後,我們首先要設計主窗口界面,pycharm菜單欄 > tools > external tools >QT> QtDesignerr ,打開PyQt5的Qt Designer,會自動彈出新建窗體new form對話框,。在窗體模板中選擇Main Window。新建的MainWindow窗口是一個有菜單條、錨接窗口(例如工具條)和一個狀態條的主應用程序窗口。見下圖:

QTDesigner主窗口界面如下:

建立的窗口可以按住右下角,拖動改變窗口大小,設計時從左邊Widget Box中將所需控件拖到窗口中。比如:先拖一個Label、一個PushButton到窗口中,控件屬性可在對象屬性窗口中修改,部分屬性也可在鼠標右鍵菜單中修改。在控件上右鍵選擇“change plain text”可修改控件顯示文本,我們將Label文本改成“Hello World!”,按鈕文本改成“OK”。在控件上右鍵選擇“change objectName”可修改控件名稱,我們將按鈕名稱改爲“btnOK”。如下圖:

接下來添加按鈕事件處理。在Qt中對象間通訊使用信號(Signal)和槽(Slot),這是編程中對象間通訊的機制,是 QT 的核心特性,也是 QT 區別於其它工具包的重要地方。Signal/SlotEditor默認在QtDesigner界面右下角,點擊”+”,添加一條Signal/Slot,Sender選擇btnOK,Signal選擇clicked(),Receiver選擇MainWindow,slot選擇close(),這條記錄意思就是:點擊btnOK,發送一個clicked信號給MainWindow,MainWindow執行窗口的close()函數關閉窗口。

點擊菜單Form——>Preview...,預覽結果,點擊OK按鈕關閉預覽窗口。

本項目正式的主窗口界面如下圖,將本窗口設計保存到項目文件夾下,命名爲:MainWindow.ui。

  1. 界面與邏輯分離

界面文件在pyQT中有多種使用方式,可以直接在py代碼中加載ui文件,也可以編譯成py文件後再調用,如何使用可根據項目需要選擇。

窗口界面設計完成後,回到pycharm,在項目下找到MainWindow.ui,鼠標右擊,選擇QT——>pyuic5,將ui文件編譯成py文件,在本項目中產生的文件名爲:Ui_MainWindow.py。

我們可以在編譯好的py文件中直接編寫業務邏輯代碼,不過這樣的話,界面和邏輯開發就混合在一起了,每一次的ui更新都會伴隨着轉換後py文件的槽函數的添加修改,及其不方便,造成效率低下。解決辦法是利用繼承實現界面和業務邏輯的分離,本例就來介紹如何將二者剝離。

在項目上右鍵,選擇New——>Python File,創建一個名爲TemplatePrint.py的文件,在文件中添加如下代碼:

# -*- coding: utf-8 -*-

from PyQt5.QtGui import *

from PyQt5.QtCore import *

from PyQt5.QtWidgets import *

Import sys

from Ui_MainWindow import Ui_MainWindow   # 主窗口

class MainWindow(QMainWindow,Ui_MainWindow):

    def __init__(self):

        super(MainWindow, self).__init__()

        self.setupUi(self)

if __name__ == '__main__':

    app = QApplication(sys.argv)

    win = MainWindow()

    win.show()

    sys.exit(app.exec_())

MainWindow類繼承了QMainWindow和Ui_MainWindow,業務邏輯代碼應該放在MainWindow類中。在MainWindow類的初始化函數中,首先調用父類QMainWindow的初始化函數進行初始化,然後再通過調用Ui_MainWindow中的setupUi函數來完成窗體界面的初始化工作。實際上這已經將界面與業務邏輯分離開了,因爲界面的初始化代碼Ui_MainWindow是作爲模塊導入到MainWindow中的。如果界面發生改動,只需要通過pyuic5命令重新生成Ui_MainWindow.py文件,TemplatePrint.py文件不需要做改動。

  1. 運行測試

在項目的TemplatePrint.py上右鍵選擇”運行TemplatePrint”,可以看到項目被運行起來了。對複雜的項目,pycharm提供了項目運行配置方案。在菜單上選擇Run——>Edit configurations,按“+”添加一個配置,命名爲TemplatePrint,如下圖:

配置完成後,在菜單Run——>Run‘TemplatePrint’,可直接運行測試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章