首页 > 解决方案 > 有没有办法在不为多行编写 .addWidget() 的情况下向 QWidget 添加多个小部件?

问题描述

目前,我正在尝试找出是否有办法创建一个列表,然后将列表中的每个小部件添加到 QWidget 布局中。

这就是我的工作方式,但它目前只显示列表中的最后一个小部件:

def HomeWidget(self):
    widget = QtWidgets.QWidget(self)
    layout = QVBoxLayout(widget)

    #title of page
    title = QtWidgets.QLabel('Welcome to the Home Page')
    title.setObjectName('titleOfPage')


    labelTest = QtWidgets.QLabel('TEST')
    labelTest.setObjectName('genText')



    widgetList = [title, labelTest] #all widgets go here
    for widget in widgetList:
        layout.addWidget(widget)

    return widget

标签: pythonpython-3.xpyqtpyqt5

解决方案


循环中的变量小部件与函数体中的另一个变量小部件冲突。
在循环中重命名小部件var,一切都会正常工作:

def HomeWidget(self):
    widget = QtWidgets.QWidget(self)
    layout = QVBoxLayout(widget)

    #title of page
    title = QtWidgets.QLabel('Welcome to the Home Page')
    title.setObjectName('titleOfPage')


    labelTest = QtWidgets.QLabel('TEST')
    labelTest.setObjectName('genText')



    widgetList = [title, labelTest] #all widgets go here
    for w in widgetList:
        layout.addWidget(w)

    return widget

推荐阅读