为了避免出现这些问题,建议不要修改此文件,而是创建一个新文件,我们实现一个使用该设计的类.
例如,假设您已在design.ui文件中使用了MainWindow模板,然后将其转换为Ui_Design.py,如下所示:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
[...]
def retranslateUi(self, MainWindow):
[...]
然后我们将创建一个新文件,我们将调用logic.py,我们将创建处理逻辑的文件并使用以前的设计:
class Logic(QMainWindow, Ui_MainWindow):
def __init__(self, *args, **kwargs):
QMainWindow.__init__(self, *args, **kwargs)
self.setupUi(self)
因此,即使您修改设计并再次生成文件.py,您也不必修改逻辑文件.
为了概括这个想法,我们必须有以下规则,但为此逻辑类必须具有以下结构:
class Logic(PyQtClass, DesignClass):
def __init__(self, *args, **kwargs):
PyQtClass.__init__(self, *args, **kwargs)
self.setupUi(self)
> PyQtClass:此类取决于所选的设计.
Template PyQtClass
─────────────────────────────────────────────
Main Window QMainWindow
Widget QWidget
Dialog with Buttons Bottom QDialog
Dialog with Buttons Right QDialog
Dialog with Without Buttons QDialog
> DesignClass:设计中出现的类的名称.
class Logic(QMainWindow, Ui_MainWindow):
def __init__(self, *args, **kwargs):
QMainWindow.__init__(self, *args, **kwargs)
self.setupUi(self)
def closeEvent(self, event):
answer = QtWidgets.QMessageBox.question(
self,
'Are you sure you want to quit ?',
'Task is in progress !',
QtWidgets.QMessageBox.Yes,
QtWidgets.QMessageBox.No)
if answer == QtWidgets.QMessageBox.Yes:
event.accept()
else:
event.ignore()