gpt4 book ai didi

python - 在运行时将小部件添加到嵌套布局

转载 作者:太空宇宙 更新时间:2023-11-03 20:10:14 24 4
gpt4 key购买 nike

我一直在尝试制作一个小的 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)

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

最佳答案

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

解决方案是将addItem()改为addLayout():

self.widget_layout.addWidget(self.btn)
<b>self.widget_layout.addLayout(self.button_layout)</b>
self.setLayout(self.widget_layout)

关于python - 在运行时将小部件添加到嵌套布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58750640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com