从pyqt中调用qwidget的parent()导致非类型



我在qmainwindow中的孩子中有一个自定义的窗口小工具类(在pyqt 5.9中),需要从mainwindow访问变量和功能。我正在使用一个想象中称为self.test的测试变量进行设置。但是,当我使用self.parent()。在子类中测试时,我会得到错误:

file&quot&quot d:/test.py",第390行,在mainwin = mainwindow()

file&quot&quot" in init self.leftpane = fastaanalysiswidget('left')

file&quot&quot d:/test.py",第26行, in Init print(self.parent()。test)

attributeError:'nontype'对象没有属性'test'

这是简化的子类:

class FastaAnalysisWidget(QWidget):
    def __init__(self, name, parent=None):
        super(FastaAnalysisWidget, self).__init__(parent)
        print(self.parent().test)

这是简化的父窗:

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.test = 'blabla'
        self.leftPane = FastaAnalysisWidget('left')

主要看起来像这样:

app = QApplication(sys.argv)
mainWin = MainWindow()
mainWin.show()
sys.exit(app.exec_())

我是PYQT的新手,在开始Pyqt之前,我没有在Python中与亲子关系玩耍。我在此处使用的代码在我之前已成功使用的QTABWIDGET,其中标签是单独的类。我是否缺少明显的东西?

创建FastaAnalysisWidget时,您正在省略默认为 None的父参数,因此代码完全可以执行您告诉的。

您需要在MainWindow类中这样的初始化:

self.leftPane = FastaAnalysisWidget('left', parent=self)

然后,父母正确指向MainWindow。

最新更新