我在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。