在一个周期内从QListWidget中删除所有项目

2024-09-30 00:40:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: 方法代码inselfeventfordefrange
1条回答
网友
1楼 · 发布于 2024-09-30 00:40:47

其概念与从列表中删除项相同:如果使用递增索引并同时删除项,则只会删除一半的项

如果从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))

相关问题 更多 >

    热门问题