1
我有3列的QGridLayout,這樣PyQt的:更新QGridLayout正確刪除所有項目,並加入當新
self.my_grid = QGridLayout()
self.my_grid.setColumnStretch(2, 0)
創建了10個項目, 它看起來如預期這樣的填充網格後:
X X X
X X X
X X X
X
在某些事件網格項目改變,我試圖抹掉所有項目,並添加新的:
def updateGrid(self, taskList):
# delete existing items from grid
for i in reversed(range(self.my_grid.count())):
widgetToRemove = self.my_grid.itemAt(i).widget()
widgetToRemove.setParent(None)
widgetToRemove.deleteLater()
# add new buttons
for task in tasklist:
btn = QPushButton(task)
self.my_grid.addWidget(btn)
但後來它顯示了這樣一個空單元格:
X X
X X X
X X X
X X
並再次呼籲updateGrid之後,它有兩個空單元格是這樣的:
X
X X X
X X X
X X X
最後,再次迫使多了一個更新後我得到了我的預期:
X X X
X X X
X X X
X
如何避免空單元格?
啊非常感謝這一點。優秀的答案。由於網格中的項目數量將隨着每次重新加載項目而發生變化,因此我無法重新使用現有的行,但我想我將不得不更換完整的網格。 – user3729611
@ user3729611。如果*行*的數量發生變化,但列數保持不變,那麼我的答案仍然有效。通過一些小的更改,還應該可以更改列數。網格自動增長。 – ekhumoro