【问题标题】:adding widgets to nested layouts at runtime在运行时将小部件添加到嵌套布局
【发布时间】:2020-03-04 03:31:12
【问题描述】:

我一直在尝试制作一个小的 pyqt 脚本,在按下按钮时添加按钮。它按预期工作,但仅在向主布局添加按钮时。当我尝试将按钮添加到嵌套布局时,它们没有显示出来。

工作代码示例:

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.widget_layout = QVBoxLayout()

        self.btn = QPushButton('add button')
        self.btn.pressed.connect(self.add_button)

        self.widget_layout.addWidget(self.btn)
        self.setLayout(self.widget_layout)

        self.setGeometry(300, 300, 300, 300)
        self.show()

    def add_button(self):
        count = self.widget_layout.count()
        btn = QPushButton(str(count))
        self.widget_layout.addWidget(btn)

不起作用的代码示例:

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.widget_layout = QVBoxLayout()
        self.button_layout = QVBoxLayout()

        self.btn = QPushButton('add button')
        self.btn.pressed.connect(self.add_button)

        self.widget_layout.addWidget(self.btn)
        self.widget_layout.addItem(self.button_layout)
        self.setLayout(self.widget_layout)

        self.setGeometry(300, 300, 300, 300)
        self.show()

    def add_button(self):
        count = self.button_layout.count()
        btn = QPushButton(str(count+1))
        self.button_layout.addWidget(btn)

有谁知道为什么这在嵌套布局中不起作用?

【问题讨论】:

    标签: python pyqt pyqt5 qpushbutton qlayout


    【解决方案1】:

    如果你想将一个布局添加到另一个布局,那么你必须使用 addLayout() 方法,而不是你的代码失败,因为你使用 addItem() 需要一个 QLayoutItem。

    解决办法是把addItem()改成addLayout():

    self.widget_layout.addWidget(self.btn)
    self.widget_layout.addLayout(self.button_layout)
    self.setLayout(self.widget_layout)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-01
      • 2019-02-21
      • 2012-06-03
      • 2016-11-26
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      • 2014-10-17
      相关资源
      最近更新 更多