【发布时间】:2021-10-22 16:00:57
【问题描述】:
我想为我编写的 python 文件创建一个 GUI,所以我下载了 PyQt5 和 Qt Designer。当我第一次尝试导出 Qt Designer 项目时,我意识到使用的不是 PyQt5,而是 PySide2。这是什么原因?
直到那时一切正常,我想开始一些具体的事情,比如将我创建的小部件带入滚动区域。为此,我创建了一个自定义小部件并创建了一个 .ui 和一个 .py。但是,如果我尝试打电话给他们,他们就不会出现。生成的 python 代码也如下所示:
from PySide2.QtCore import (QCoreApplication, QMetaObject, QObject, QPoint, QRect, QSize, QUrl, Qt)
from PySide2.QtGui import (QBrush, QColor, QConicalGradient, QCursor, QFont, QFontDatabase, QIcon, QLinearGradient, QPalette, QPainter, QPixmap, QRadialGradient)
from PySide2.QtWidgets import *
class Ui_Form(object):
def setupUi(self, Form):
if Form.objectName():
Form.setObjectName(u"Form")
Form.resize(640, 480)
self.widget = QWidget(Form)
self.widget.setObjectName(u"widget")
self.widget.setGeometry(QRect(270, 190, 77, 44))
self.verticalLayout = QVBoxLayout(self.widget)
self.verticalLayout.setObjectName(u"verticalLayout")
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.label = QLabel(self.widget)
self.label.setObjectName(u"label")
self.verticalLayout.addWidget(self.label)
self.pushButton = QPushButton(self.widget)
self.pushButton.setObjectName(u"pushButton")
self.verticalLayout.addWidget(self.pushButton)
self.retranslateUi(Form)
QMetaObject.connectSlotsByName(Form)
# setupUi
def retranslateUi(self, Form):
Form.setWindowTitle(QCoreApplication.translate("Form", u"Form", None))
self.label.setText(QCoreApplication.translate("Form", u"TextLabel", None))
self.pushButton.setText(QCoreApplication.translate("Form", u"PushButton", None))
# retranslateUi
如您所见,我的小部件不是从“QWidget”继承,而是从“object”继承。此外,我的小部件没有“init”,而是一个“setupUi”。 这是为什么呢?
如果我更改为从“对象”继承为“QWidget”,则代码运行机器人,小部件不会显示。此外,当我尝试使用以下代码仅显示小部件本身时,它不会显示。
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
w = Ui_Form()
w.show()
sys.exit(app.exec_())
空小部件
我试图四处搜索,但没有找到任何帮助我的东西,所以我在这里问我的问题。
有人可以向我解释为什么这一切会像现在这样发生,以及我如何让它们显示小部件并将它们添加到滚动区域?
提前致谢!
【问题讨论】:
标签: python qt-designer pyside2