编程语言
首页 > 编程语言> > python – 重新设计用户界面后,QtDesigner更改将丢失

python – 重新设计用户界面后,QtDesigner更改将丢失

作者:互联网

我在QtDesigner中使用QtDesinger设计GUI,在QtDesigner中设计我想要的UI后,将其转换为python代码,然后我改变生成的代码在我的python代码中执行一些操作,但是如果我用QtDesigner更改了UI再次将它转换为python代码,我在代码上丢失了以前的更改.

我该如何解决这个问题?

我们可以在python中传播多个文件的类来编写其他文件中的代码吗?

解决方法:

为了避免出现这些问题,建议不要修改此文件,而是创建一个新文件,我们实现一个使用该设计的类.

例如,假设您已在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:设计中出现的类的名称.

此实现的优点是您可以实现所有逻辑,因为它是一个小部件,例如我们将实现解决方案closing pyqt messageBox with closeevent of the parent window

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()

标签:qt-designer,pyqt5,python,pyqt
来源: https://codeday.me/bug/20190823/1698882.html