Нет никакой разницы.
TL; DR;
QWidget наследуется от QObject, и у QObject есть дерево иерархии между родителями и детьми, в C ++он служит для того, чтобы при удалении родителя он исключал своих потомков, чтобы можно было легко обрабатывать память, в случае PyQt это происходит так же, поскольку дескриптор памяти обрабатывается не напрямую python, а C ++.
предыдущая причина заключается в том, что он служит для передачи родительского параметра объектам QObject, с другой стороны, в QWidgets положение дочерних элементов всегда относительно родительского, поэтому, если вы передадите себя в качестве родителя, виджет будет нарисован на родительском объекте..
Переходя к вашему конкретному коду, нет никакой разницы, потому что макеты устанавливают родительский элемент виджетов, которые обрабатывают виджет там, где он установлен, так что вы можете устранить первоначальные отношения родства, так как макет установит их.
Мы можем увидеть разницу, если не будем использовать макет с моментаНикто не установит, где будет нарисован виджет, и поэтому виджеты не будут отображаться.
Без себя:
def initUI(self):
lcd = QLCDNumber()
sld = QSlider(Qt.Horizontal)
С собой:
def initUI(self):
lcd = QLCDNumber(self)
sld = QSlider(Qt.Horizontal, self)