我正在开发一个基于QWidget的PyQt应用程序。我把我的整个应用程序在一个类(名为"Example")。在这个应用程序中,我有一个按钮,调用另一个QWidget窗口(名为"报告小部件"),我在QtDesigner上设计并打开它。问题是我不知道该怎么做。这是我使用的方法(来自我在网上找到的东西)。在我的主类"Example"上,一个方法定义了调用"Report Widget"的按钮:
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,它是来自示例(主)类的一个类:
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导入。
问题是,使用这种方法,当我单击Report Widget按钮时,会弹出一个新窗口,但是是空的。Ui_ReportWidget类的内容没有被加载。
我希望我的问题足够清楚。
谢谢
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)