1.界面与逻辑分离
首先利用Qt Designer设计.ui文件,然后采用Tools->External Tools->PyUIC转换成.py文件。这个.py文件是.ui文件编译而来的,将这种文件由.ui文件编译而来的.py文件称之为界面文件。由于界面文件每次编译时候都会初始化,所以需要新建一个.py文件来调用界面文件,这个新建立的.py问称之为逻辑文件,也可以成为业务文件。
界面文件和逻辑文件是两个相对独立的文件,通过上述方法实现了界面与逻辑的分离。
逻辑文件代码(自己写的代码)
import sys from PyQt5.QtWidgets import QApplication,QMainWindow from gyy_firstMain import * class MyMainWindow(QMainWindow,Ui_MainWindow): def __init__(self,parent=None): super(MyMainWindow,self).__init__(parent) self.setupUi(self) if __name__=="__main__": app = QApplication(sys.argv) myWin=MyMainWindow() myWin.show() sys.exit(app.exec_())
界面文件代码(通过.ui文件转换的代码)
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'gyy_firstMain.ui' # # Created by: PyQt5 UI code generator 5.15.4 # # 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(800, 600) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(490, 110, 93, 28)) self.pushButton.setObjectName("pushButton") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26)) 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"))2.信号与槽简单示例
窗口显示的代码
import sys from PyQt5.QtWidgets import QApplication,QMainWindow from gyy_MainWinSignalSlog01 import Ui_Form class MyMainWindow(QMainWindow,Ui_Form): def __init__(self,parent=None): super(MyMainWindow,self).__init__(parent) self.setupUi(self) if __name__=="__main__": app = QApplication(sys.argv) myWin = MyMainWindow() myWin.show() sys.exit(app.exec_())
业务逻辑分离的代码
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'gyy_MainWinSignalSlog01.ui' # # Created by: PyQt5 UI code generator 5.15.4 # # 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_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(400, 300) self.closeWinBtn = QtWidgets.QPushButton(Form) self.closeWinBtn.setGeometry(QtCore.QRect(130, 90, 92, 28)) self.closeWinBtn.setObjectName("closeWinBtn") self.retranslateUi(Form) self.closeWinBtn.clicked.connect(Form.close) QtCore.QmetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.closeWinBtn.setText(_translate("Form", "关闭窗口"))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)