开发者社区> 问答> 正文

循环删除QListWidget中的所有项目

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

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 21:40:46 988 0
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))
    

    回答来源:stackoverflow

    2020-03-24 21:40:52
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载