【问题标题】:Remove all items from QListWidget in a cycle在一个循环中从 QListWidget 中删除所有项目
【发布时间】:2020-06-19 09:05:21
【问题描述】:

我有以下代码,它应该从 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))

【问题讨论】:

  • 您确定它只删除 一个 项吗?不是每两个就删除一个吗?
  • @musicamante 它删除了一半的项目。

标签: python python-3.x pyqt pyqt5 qlistwidget


【解决方案1】:

这个概念与从列表中删除项目相同:如果您使用增加索引并同时删除项目,则只会删除一半的项目。

如果从 0 开始并删除第 0 行,那么第二项将成为第一项。由于在下一个循环中您将尝试删除第 1 行,结果是您将删除之前的第三行。

因此,您可以随时删除第 0 行的项目:

    def onRemoveItems(self):
        for i in range(self.myListWidget2.count()):
            itemI = self.myListWidget2.item(0)
            self.myListWidget2.takeItem(self.myListWidget2.row(itemI))

或者使用反向范围:

    def onRemoveItems(self): # button click event
        for i in range(self.myListWidget2.count() - 1, -1, -1):
            itemI = self.myListWidget2.item(i)
            self.myListWidget2.takeItem(self.myListWidget2.row(itemI))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 2011-11-17
    • 2013-04-22
    • 1970-01-01
    相关资源
    最近更新 更多