Python 如果我通过了“setLayout(),是否可以跳过调用setLayout()方法?”;“自我”;在参数列表中初始化QLayout?

Python 如果我通过了“setLayout(),是否可以跳过调用setLayout()方法?”;“自我”;在参数列表中初始化QLayout?,python,pyqt5,Python,Pyqt5,考虑以下布局代码: def __init__(self, parent=None): super().__init__(parent) self.layout = QtWidgets.QHBoxLayout(self) 上述代码是否与以下代码具有相同的效果 def __init__(self, parent=None): super().__init__(parent) self.layout = QtWidgets.QHBoxLayout() self

考虑以下布局代码:

def __init__(self, parent=None):
    super().__init__(parent)
    self.layout = QtWidgets.QHBoxLayout(self)
上述代码是否与以下代码具有相同的效果

def __init__(self, parent=None):
    super().__init__(parent)
    self.layout = QtWidgets.QHBoxLayout()
    self.setLayout(self.layout)

换句话说,如果我调用
qtwidts.QHBoxLayout(self)
,是否等同于调用
self.setLayout

是的,这两个代码片段具有相同的功能,如文档中所述:

调用此函数的另一种方法是将此小部件传递给布局的构造函数

请注意,您的代码还有另一个潜在错误:
layout()
是Qt属性,因此不应使用
self.layout=…
覆盖它,因为现有函数仍将返回当前布局