我正在使用基于QWidget的PyQt开发应用程序。我把我的整个应用程序放在一个类中(名为"示例")。在这个应用程序中,我有一个按钮,它调用另一个QWidget窗口(名为" Report Widget")我在QtDesigner上设计并打开它。 问题是我不知道该怎么做。这是我使用的方法(来自我在互联网上找到的东西)。 在我的主要课程"示例"中,一个方法定义了按钮调用"报告小部件" :
ReportBtn = QtGui.QPushButton("Generate report")
ReportBtn.clicked.connect(self.ShowReportWidget)
第二行调用Example(main)类的ShowReportWidget方法:
def ShowReportWidget(self):
self.f = QtGui.QWidget()
self.ReportWidget = ReportWidget(self.f)
self.ReportWidget.show()
此方法调用类ReportWidget,它是Example(main)类中的一个类:
class ReportWidget(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self)
self.ui = rw.Ui_ReportWidget()
self.ui.setupUi(parent)
最后,这个类引用了一个外部类(Ui_ReportWidget),它包含在另一个单独的Python文件(从QtDesigner .ui文件生成的文件)中,我在脚本的开头导入为rw。
问题是,使用此方法,当我单击“报告窗口小部件”按钮时,会弹出一个新窗口,但该窗口为空。未加载Ui_ReportWidget类的内容。
我希望我的问题很清楚。
由于
答案 0 :(得分:3)
SetupUi将Qwidget作为输入,而 init ()函数应将调用QObject作为父级。
def ShowReportWidget(self):
self.f = QtGui.QWidget()
self.ReportWidget = ReportWidget(self)
self.ReportWidget.setupUi(self.f)
self.f.exec_()
class ReportWidget(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self,parent)
def setupUi(self,Widget):
self.ui = rw.Ui_ReportWidget()
self.ui.setupUi(Widget)