目录
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, QtWidgets
class 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.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
if __name__ == "__main__":
import sys
app = 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()
# 回调函数执行的事件函数1
def signThing1(self):
pass
# 回调函数执行的事件函数2
def 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 sys
app = QtWidgets.QApplication(sys.argv) # 创建pyqt5应用
logicwin = demoLogic()# 将逻辑类实例化
logicwin.show()# 显示窗口
sys.exit(app.exec_())# 退出窗口
4)运行结果
按下pushButton后