【问题标题】:AttributeError: 'builtin_function_or_method' object has no attribute 'addLayout'AttributeError:“builtin_function_or_method”对象没有属性“addLayout”
【发布时间】:2018-12-05 12:29:41
【问题描述】:

我在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)

尝试分配Vertical layout to Horizontal layout

self.layout.addLayout(hlay1) 这一行有错误

AttributeError: 'builtin_function_or_method' object has no attribute 'addLayout'

我该如何解决这个错误?

【问题讨论】:

  • self.layout 更改为 self.another_name,因为布局是小部件的一种方法,因此您正在覆盖它,这总是会带来问题

标签: python python-3.x pyqt5


【解决方案1】:

您正在尝试访问self.layout之前__init__ 中的self.layout = QtWidgets.QVBoxLayout(self) 行已运行。因此,self.layoutinherited method from the QtWidgets.QWidget base class

您可能希望完全使用不同的名称,以免与QtWidgets.QWidget 上的方法发生冲突。

【讨论】:

    猜你喜欢
    • 2018-11-29
    • 2018-03-27
    • 2020-11-27
    • 2016-01-31
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-23
    相关资源
    最近更新 更多