parent 参数有什么用?

What is the parent argument for?

我在 pyqt docs 中读到如果 parent 是 None,QWidget 将变成 window。但是在我的主要小部件中,我创建了几个 QWidget 子类而不传递 parent 参数,并且它工作正常:

widget = MyWidget()
layout = QVBoxLayout()
layout.addWidget(widget)
self.setLayout(layout)

这是如何工作的,parent 参数的真正用途是什么?

当您使用 setLayout 时,布局会自动成为分配给它的小部件的子项:

http://pyqt.sourceforge.net/Docs/PyQt4/qwidget.html#setLayout

因此,您所发现的似乎不是 parent 的一般问题,而是 setLayout 的一个特征。请注意 QLayout 不是 QWidget,因此永远不会成为独立的 window -- 它被迫坐在内存中等待粘附到小部件。