如何在PyQt中从另一个QWidget调用QWidget



我正在开发一个基于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)

最新更新