То, что вы ожидаете, неверно, я не буду ничего указывать на книгу, поскольку вы не указываете, что это за книга, или указываете цитату, где она указывает, что вы, вероятно, неправильно истолковываете то, на что указывает автор.
Виджет отображается как часть другого виджета, если первый является дочерним элементом второго или дочерним элементом виджета, который уже отображается в виджете.
В вашем примере при передаче "self" Вы указываете, что QLabel являются дочерними элементами окна:
print(subwidget.parentWidget())
print(label.parentWidget())
Вывод:
<__main__.MainWindow object at 0x7f10757a4dc0>
<__main__.MainWindow object at 0x7f10757a4dc0>
Так что, если оно действительно, они отображаются.
Так почему же виджеты, установленные в макете, отображаются, если они не привязаны к родительскому элементу? Хорошо, когда макет устанавливается внутренне, он устанавливает, что родителем виджета является виджет, в котором был создан макет
class MainWindow(qtw.QWidget):
def __init__(self):
super().__init__(windowTitle="Hello world")
btn1 = qtw.QPushButton("btn1")
btn2 = qtw.QPushButton("btn2")
lay = qtw.QVBoxLayout(self)
lay.addWidget(btn1)
lay.addWidget(btn2)
print(btn1.parentWidget())
print(btn2.parentWidget())
Вывод:
<__main__.MainWindow object at 0x7faf9ced2e50>
<__main__.MainWindow object at 0x7faf9ced2e50>
В заключение:
Виджет будет отображаться как часть другого виджета, если для Мер - дитя последнего. Есть исключительные случаи, такие как скрытие виджета, установлено, что дочерний виджет является всплывающим.