目錄
?
1、ui文件
2、ui轉py文件
3、邏輯py文件
4、實例
1)ui文件——demo.ui
2)ui轉py文件——demo.py
3)邏輯py文件——demoLogic.py
4)運行結果
1、ui文件
這個文件是直接通過pyqt5 designer進行設計的,相關配置可見《配置Qt Designer到PyCharm之【designer.exe的保存位置及ui文件轉py文件及no Qt platform plugin could be initialized 問題解決】 》
2、ui轉py文件
這個文件是通過pyuic來得到的,具體配置可見《配置Qt Designer到PyCharm之【designer.exe的保存位置及ui文件轉py文件及no Qt platform plugin could be initialized 問題解決】 》
這里主要是控件的相關屬性設置
3、邏輯py文件
因為每次修改ui文件,然后通過pyuic轉py都會將自己添加的代碼給格式化掉,因此最好是將自己要添加的代碼另寫一個Py文件,只需要在這個文件中導入ui轉py文件即可
這里主要封裝的是每個控件的回調方法
4、實例
這里以按下按鈕彈出提示的GUI為例,如下圖所示
我這里含4個文件,文件層級如下圖所示
1)ui文件——demo.ui
2)ui轉py文件——demo.py
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'demo.ui'
#
# Created by: PyQt5 UI code generator 5.15.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(231, 130)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.pushButton = QtWidgets.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(80, 40, 75, 23))self.pushButton.setObjectName("pushButton")MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 231, 23))self.menubar.setObjectName("menubar")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))self.pushButton.setText(_translate("MainWindow", "PushButton"))if __name__ == "__main__":import sysapp = QtWidgets.QApplication(sys.argv)MainWindow = QtWidgets.QMainWindow()ui = Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.show()sys.exit(app.exec_())
3)邏輯py文件——demoLogic.py
from GUI_Template.GUITemplate.demo import *# 新建類,繼承于UI_MainWindow,用于寫一些回調函數和執行事件
class demoLogic(QtWidgets.QMainWindow,Ui_MainWindow):# 擴展類方法,通常寫一些全局變量賦值等def __init__(self,parent=None):super(demoLogic,self).__init__(parent)self.setupUi(self)self.run()# 回調函數執行的事件函數1def signThing1(self):pass# 回調函數執行的事件函數2def signThing2(self):pass# 消息彈出事件def qmessage(self):QtWidgets.QMessageBox.warning(self, "警告對話框", "繼續執行會導致系統重啟,你確定要繼續?",QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No)# ......# 關于一些控件的連接方法def run(self):# self.pushButton.clicked.connect(self.signThing1)# self.pushButton.clicked.connect(self.signThing2)self.pushButton.clicked.connect(self.qmessage)if __name__ == "__main__":import sysapp = QtWidgets.QApplication(sys.argv) # 創建pyqt5應用logicwin = demoLogic()# 將邏輯類實例化logicwin.show()# 顯示窗口sys.exit(app.exec_())# 退出窗口
4)運行結果
按下pushButton后