我有一列自动生成的按钮,如果有太多,可以挤压窗口中的 UI 元素。因此,我想通过以下方式自动将单列按钮(名义上在QVBoxLayout
称为内部的按钮)self.main_layout
转换为多列事件:
- 从中删除按钮
self.main_layout
QVBoxLayout
将它们添加到由s表示的交替新列- 更改
self.main_layout
为QHBoxLayout
- 将新列添加到此布局
我的尝试只是导致按钮停留在单列中,但现在甚至不调整大小以填充QSplitter
它们占据的框架:
app = QApplication(sys.argv)
window = TestCase()
app.exec_()
class TestCase(QMainWindow):
def __init__(self):
super().__init__()
test = QWidget()
self.layout = QVBoxLayout()
test.setLayout(self.layout)
for i in range(10):
temp_btn = QPushButton(str(i))
temp_btn.pressed.connect(self.multi_col)
self.layout.addWidget(temp_btn)
self.setCentralWidget(test)
@pyqtSlot()
def multi_col(self):
cols = [QVBoxLayout(), QVBoxLayout()]
while self.layout.count():
child = self.layout.takeAt(0)
if child.widget():
self.layout.removeItem(child)
cols[0].addItem(child)
cols[1], cols[0] = cols[0], cols[1]
self.layout = QHBoxLayout()
self.layout.addLayout(cols[0])
self.layout.addLayout(cols[1])
我在这里做错了什么明显的事情吗?