在一个循环中从 QListWidget 中删除所有项目
Remove all items from QListWidget in a cycle
我有以下代码,它应该从 QListWidget 中删除所有项目,
但它一次单击仅删除一个项目(不是全部)。为什么?怎么才对呢?
我不想使用 clear()
方法。我想逐渐去除它们。
def onRemoveItems(self): # button click event
for i in range(self.myListWidget2.count()):
itemI = self.myListWidget2.item(i)
self.myListWidget2.takeItem(self.myListWidget2.row(itemI))
概念与从列表中删除项目相同:如果使用递增索引并同时删除项目,只会删除一半的项目。
如果从0开始,去掉第0行,那么第二项就会变成第一项。由于在下一个循环中您将尝试删除第 1 行,结果是您将删除之前的第三行。
因此,您可以始终删除第 0 行的项目:
def onRemoveItems(self):
for i in range(self.myListWidget2.count()):
itemI = self.myListWidget2.<b>item(0)</b>
self.myListWidget2.takeItem(self.myListWidget2.row(itemI))
或使用反向范围:
def onRemoveItems(self): # button click event
for i in range<b>(self.myListWidget2.count() - 1, -1, -1)</b>:
itemI = self.myListWidget2.item(i)
self.myListWidget2.takeItem(self.myListWidget2.row(itemI))
我有以下代码,它应该从 QListWidget 中删除所有项目,
但它一次单击仅删除一个项目(不是全部)。为什么?怎么才对呢?
我不想使用 clear()
方法。我想逐渐去除它们。
def onRemoveItems(self): # button click event
for i in range(self.myListWidget2.count()):
itemI = self.myListWidget2.item(i)
self.myListWidget2.takeItem(self.myListWidget2.row(itemI))
概念与从列表中删除项目相同:如果使用递增索引并同时删除项目,只会删除一半的项目。
如果从0开始,去掉第0行,那么第二项就会变成第一项。由于在下一个循环中您将尝试删除第 1 行,结果是您将删除之前的第三行。
因此,您可以始终删除第 0 行的项目:
def onRemoveItems(self):
for i in range(self.myListWidget2.count()):
itemI = self.myListWidget2.<b>item(0)</b>
self.myListWidget2.takeItem(self.myListWidget2.row(itemI))
或使用反向范围:
def onRemoveItems(self): # button click event
for i in range<b>(self.myListWidget2.count() - 1, -1, -1)</b>:
itemI = self.myListWidget2.item(i)
self.myListWidget2.takeItem(self.myListWidget2.row(itemI))