Python 重新设计用户界面后,QtDesigner更改将丢失
我正在使用Qt Designer for design GUI在python中使用,在Qt Designer中设计所需的UI后,将其转换为python代码,然后更改生成的代码以在python代码中执行某些操作,但是如果我使用Qt Designer更改UI并再次将其转换为python代码,我将丢失以前对代码所做的更改 我怎样才能解决这个问题Python 重新设计用户界面后,QtDesigner更改将丢失,python,pyqt,pyqt5,qt-designer,Python,Pyqt,Pyqt5,Qt Designer,我正在使用Qt Designer for design GUI在python中使用,在Qt Designer中设计所需的UI后,将其转换为python代码,然后更改生成的代码以在python代码中执行某些操作,但是如果我使用Qt Designer更改UI并再次将其转换为python代码,我将丢失以前对代码所做的更改 我怎样才能解决这个问题 我们可以在python中将一个类扩展到多个文件上,以便在其他文件中编写代码吗?为了避免出现这些问题,建议不要修改此文件,而是创建一个新文件,在其中实现一个使用
我们可以在python中将一个类扩展到多个文件上,以便在其他文件中编写代码吗?为了避免出现这些问题,建议不要修改此文件,而是创建一个新文件,在其中实现一个使用该设计的类 例如,假设您在
design.ui
文件中使用了main窗口
模板,然后将其转换为ui\u design.py
,类似于以下结构:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
[...]
def retranslateUi(self, MainWindow):
[...]
class Logic(PyQtClass, DesignClass):
def __init__(self, *args, **kwargs):
PyQtClass.__init__(self, *args, **kwargs)
self.setupUi(self)
然后,我们将创建一个新文件,我们将称之为logic.py
,其中我们将创建处理逻辑并使用先前设计的文件:
class Logic(QMainWindow, Ui_MainWindow):
def __init__(self, *args, **kwargs):
QMainWindow.__init__(self, *args, **kwargs)
self.setupUi(self)
因此,即使修改设计并再次生成文件.py,也不必修改逻辑文件
要概括这一思想,我们必须有以下规则,但为此,逻辑类必须有以下结构:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
[...]
def retranslateUi(self, MainWindow):
[...]
class Logic(PyQtClass, DesignClass):
def __init__(self, *args, **kwargs):
PyQtClass.__init__(self, *args, **kwargs)
self.setupUi(self)
- PyQtClass:该类取决于所选的设计
- 设计类:出现在设计中的类的名称
此实现的优点是,您可以实现所有逻辑,因为它是一个小部件,例如,我们将实现解决方案:
最简单的方法是在python代码中直接使用*.ui文件,不需要每次更改ui时都转换为*.py文件。 您可以在项目中使用此伪代码
# imports
from PyQt5 import uic
# load ui file
baseUIClass, baseUIWidget = uic.loadUiType("MainGui.ui")
# use loaded ui file in the logic class
class Logic(baseUIWidget, baseUIClass):
def __init__(self, parent=None):
super(Logic, self).__init__(parent)
self.setupUi(self)
.
.
.
.
def main():
app = QtWidgets.QApplication(sys.argv)
ui = Logic(None)
ui.showMaximized()
sys.exit(app.exec_())
请参阅PyQt5文档中的示例,以了解如何使用pyuic生成的代码。