[英]AttributeError: 'builtin_function_or_method' object has no attribute 'addLayout'
I have this UIWidget class in PyQT5 and Python3
as follow. 我在
PyQT5 and Python3
有以下UIWidget类,如下所示。
class UIWidget(QtWidgets.QWidget):
def __init__(self, parent=None):
super(UIWidget, self).__init__(parent)
# Initialize tab screen
self.tabs = QtWidgets.QTabWidget()
self.tab1 = QtWidgets.QWidget()
# Add tabs
self.tabs.addTab(self.tab1, "Face")
self.display = PlayStreaming()
# Create first tab
self.createGridLayout()
self.tab1.layout = QtWidgets.QVBoxLayout()
self.tab1.layout.addWidget(self.display, stretch=1)
self.tab1.layout.addWidget(self.horizontalGroupBox)
self.tab1.setLayout(self.tab1.layout)
# Add tabs to widget
self.layout = QtWidgets.QVBoxLayout(self)
self.layout.addWidget(self.tabs)
def createGridLayout(self):
hlay1 = QtWidgets.QVBoxLayout()
self.horizontalGroupBox = QtWidgets.QGroupBox("")
self.horizontalGroupBox.setStyleSheet("QGroupBox{ background-color: red; border: none;}")
self.ScaleUpButton=QtWidgets.QPushButton('ScaleUp')
self.ScaleUpButton.clicked.connect(self.display.scaleupSignal)
hlay1.addWidget(self.ScaleUpButton)
self.ScaleDownButton=QtWidgets.QPushButton('ScaleDown')
self.ScaleDownButton.clicked.connect(self.display.scaledownSignal)
hlay1.addWidget(self.ScaleDownButton)
self.resetButton=QtWidgets.QPushButton('Reset')
hlay1.addWidget(self.resetButton)
self.resetButton.clicked.connect(self.display.resetallarraysSignal)
self.RecognizeButton=QtWidgets.QPushButton('Recognize')
self.RecognizeButton.clicked.connect(self.display.send_signal)
hlay1.addWidget(self.RecognizeButton)
self.layout.addLayout(hlay1)
self.horizontalGroupBox.setLayout(self.layout)
Trying to allocate Vertical layout to Horizontal layout
. 尝试将“
Vertical layout to Horizontal layout
分配Vertical layout to Horizontal layout
。
This line self.layout.addLayout(hlay1)
has error as 这行
self.layout.addLayout(hlay1)
错误为
AttributeError: 'builtin_function_or_method' object has no attribute 'addLayout'
How can I solve the error? 我该如何解决错误?
You are trying to access self.layout
before the self.layout = QtWidgets.QVBoxLayout(self)
line in __init__
has run. 您正在尝试运行
__init__
的self.layout = QtWidgets.QVBoxLayout(self)
行之前访问self.layout
。 As such, self.layout
is the inherited method from the QtWidgets.QWidget
base class . 因此,
self.layout
是QtWidgets.QWidget
基类的继承方法 。
You probably want to use a different name altogether to not collide with the method on QtWidgets.QWidget
in the first place. 您可能首先想使用一个不同的名称,以免与
QtWidgets.QWidget
上的方法冲突。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.