1. 程式人生 > 其它 >PyQt5-3個單窗體GUI專案模板

PyQt5-3個單窗體GUI專案模板

示例程式大部分只有一個窗體,並且採用視覺化方法設計窗體UI檔案。窗體的常用基類是QWidget、QDialog和QMainWindow。

· \dialogApp目錄,是一個主窗體基於QDialog的應用程式模板。

· \widgetApp目錄,是一個主窗體基於QWidget的應用程式模板。

· \mainWindowApp目錄,是一個主窗體基於QMainWindow的應用程式模板。

dialogApp專案模板



檔案myDialog.py是與Dialog.ui對應的窗體業務邏輯類QmyDialog所在的檔案,這個檔案的內容如下:

# -*- coding:utf-8-*-
import sys
from PyQt5.QtWidgets import QApplication,QDialog
##from PyQt5.QtCore import pyqtSlot,pyqtSignal,Qt
##from PyQt5.QtWidgets import
##from PyQt5.QtGui import
##from PyQt5.QtSql import
##from PyQt5.QtMultimedia import
##from PyQt5.QtMultimediaWidgets import
from ui_Dialog import Ui_Dialog
class QmyDialog(QDialog):
    def __init__(self,parent=None):
        super().__init__(parent) #呼叫父類建構函式,構建窗體
        self.ui=Ui_Dialog #建立UI物件
        self.ui.setupUi(self) #構建UI

    ##==========自定義功能函式===========
    ##==========事件處理函式============
    ##==========由connectSlotsByName()自動關聯的槽函式======
    ##==========自定義槽函式===========
    ##==========窗體測試程式===========
    if __name__=="__main__": ##用於當前窗體測試
        app=QApplication(sys.argv) #建立GUI應用程式
        form=QmyDialog() #建立窗體
        from.show()
        sys.exit(app.exec_())

這個檔案裡定義了窗體業務邏輯類QmyDialog,在建構函式裡已經有建立窗體的程式碼。QmyDialog的程式碼分為幾部分,分別用於新增各種函式程式碼。

檔案myDialog.py裡還有窗體測試程式,所以可以直接執行myDialog.py檔案以測試QmyDialog類的功能。

檔案appMain.py是將檔案myDialog.py中的窗體測試部分的程式單獨拿出來作為一個檔案。在具有多個窗體的GUI專案裡,appMain.py檔案的程式碼建立主窗體然後執行應用程式。

widgetApp專案模板

# -*- coding:utf-8-*-
import sys
from PyQt5.QtWidgets import QApplication,QWidget
##from PyQt5.QtCore import pyqtSlot,pyqtSignal,Qt
##from PyQt5.QtWidgets import
##from PyQt5.QtGui import
##from PyQt5.QtSql import
##from PyQt5.QtMultimedia import
##from PyQt5.QtMultimediaWidgets import
from ui_Widget import Ui_Widget
class QmyDialog(QWidget):
    def __init__(self,parent=None):
        super().__init__(parent) #呼叫父類建構函式,構建窗體
        self.ui=Ui_Widget #建立UI物件
        self.ui.setupUi(self) #構建UI

    ##==========自定義功能函式===========
    ##==========事件處理函式============
    ##==========由connectSlotsByName()自動關聯的槽函式======
    ##==========自定義槽函式===========
    ##==========窗體測試程式===========
    if __name__=="__main__": ##用於當前窗體測試
        app=QApplication(sys.argv) #建立GUI應用程式
        form=QmyWidget() #建立窗體
        from.show()
        sys.exit(app.exec_())

mainWindowApp專案模板

# -*- coding:utf-8-*-
import sys
from PyQt5.QtWidgets import QApplication,QMainWindow
##from PyQt5.QtCore import pyqtSlot,pyqtSignal,Qt
##from PyQt5.QtWidgets import
##from PyQt5.QtGui import
##from PyQt5.QtSql import
##from PyQt5.QtMultimedia import
##from PyQt5.QtMultimediaWidgets import
from ui_MainWindow import Ui_MainWindow
class QmyMainWindow(QMainWindow):
    def __init__(self,parent=None):
        super().__init__(parent) #呼叫父類建構函式,構建窗體
        self.ui=Ui_MainWindow #建立UI物件
        self.ui.setupUi(self) #構建UI

    ##==========自定義功能函式===========
    ##==========事件處理函式============
    ##==========由connectSlotsByName()自動關聯的槽函式======
    ##==========自定義槽函式===========
    ##==========窗體測試程式===========
    if __name__=="__main__": ##用於當前窗體測試
        app=QApplication(sys.argv) #建立GUI應用程式
        form=QmyMainWindow() #建立窗體
        from.show()
        sys.exit(app.exec_())

使用專案模板和例項源程式

本書的示例程式都使用IDLE編寫和執行,這3個專案模板中的uic.bat完全控制了窗體UI檔案和資原始檔到Python檔案的編譯過程,當UI檔案多於一個,或UI檔名不同於模板中的UI檔名時,直接修改uic.bat檔案的內容即可。

PyQt5應用程式的開發主要有兩項工作內容:一項是窗體的UI設計,這主要在UI Designer裡視覺化設計完成;另一項是對應的窗體業務邏輯類的功能實現,也就是在3個專案模板的myDialog.py、myWidget.py和myMainWindow.py檔案裡編寫功能實現程式碼。

轉載請註明出處,歡迎討論和交流!