一、问题描述
当我们用QtDesigner制作完一个.ui界面后,转化成.py文件。之后又对此界面不太满意,想要重新修改完善界面,如果重新修改界面,对应的.py文件也会发生变化,除了自动生成的界面代码,我们还写入了其他逻辑功能程序代码,所以我们除了重新将完善后的.ui文件转化为.py文件外,也还要将自己的逻辑功能代码写进程序。所以工作量会很大。
二、问题思路
那有没有一种方法将界面文件与自己编写的逻辑程序代码分开呢,这样当我们修改界面后,只需生成对应的.py文件(界面文件)即可,自己编写的逻辑程序代码也不用跟着重新写进程序了,因为此时界面文件与自己的逻辑功能代码(逻辑文件)是相互独立的,不会受到界面文件变化的影响。即这就是所谓的界面与逻辑的分离。所以需要新建一个.py文件(逻辑文件)来调用界面文件,这个新建的.py文件也就是逻辑文件。
PyQt5界面与逻辑的分离
三、问题解决
- 首先以界面两次跳转为例。之前的代码都在一个文件里,即生成的界面代码与自己编写的逻辑功能代码都在同一个界面里。第一个界面文件(experiment_5.py)代码如下:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
import sys
import experiment_6
from experiment_6 import *
class Ui_MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent = None):
super(Ui_MainWindow, self).__init__(parent)
self.setupUi(self)
self.retranslateUi(self)
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(330, 160, 131, 51))
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")