PyQt4 - 从 QListWidget 中删除项目小部件

发布于 2024-12-05 12:22:25 字数 606 浏览 1 评论 0原文

我有一个 QListWidget,我需要删除一些项目。

根据我的研究,这通常是一件令人不愉快的事情。

我已经阅读了大量的解决方案,但没有一个适用于我的特定场景。
目前,我只有实际的 Item Widgets 需要处理;不是它们的值或索引。

这是因为我通过 .selectedItems() 获取了(需要删除的)项目。

代码如下:

ItemSelect = list(self.ListDialog.ContentList.selectedItems())

for x in range (0, len(ItemSelect)):
    print self.ListDialog.ContentList.removeItemWidget(ItemSelect[x])

但是,这根本不执行任何操作。
它不会引发错误,但所选项目不会被删除。
我见过的删除项目的方法需要项目的索引或名称,而我两者都没有。我只有实际的小部件。

我该如何删除它们?

我错过了什么吗?

我正在使用:

Python 2.7.1
PyQt4 空闲 1.8
视窗7

I have a QListWidget and I need to remove some items.

From what I've researched, this is a generally unpleasant thing to do.

I've read a tonne of solutions, but none are applicable to my specific scenario.
At the moment, I only have the actual Item Widgets to deal with; not their values or index.

This is because I obtain the items (needed to be removed) via .selectedItems().

Here's the code:

ItemSelect = list(self.ListDialog.ContentList.selectedItems())

for x in range (0, len(ItemSelect)):
    print self.ListDialog.ContentList.removeItemWidget(ItemSelect[x])

This does nothing at all, however.
It does not raise an error, but the selected items are not removed.
The methods I've seen for removing items require either the index or the name of the item, neither of which I have. I only have the actual widgets.

How do I remove them?

Am I missing something?

I'm using:

Python 2.7.1
PyQt4
IDLE 1.8
Windows 7

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

泛滥成性 2024-12-12 12:22:25

takeItem() 应该有效:

for SelectedItem in self.ListDialog.ContentList.selectedItems():
    self.ListDialog.ContentList.takeItem(self.ListDialog.ContentList.row(SelectedItem))

takeItem() should work:

for SelectedItem in self.ListDialog.ContentList.selectedItems():
    self.ListDialog.ContentList.takeItem(self.ListDialog.ContentList.row(SelectedItem))
撩心不撩汉 2024-12-12 12:22:25

从 ListWidget 中删除项目:

item = self.listWidget.takeItem(self.listWidget.currentRow())
item = None

Deleting an Item from ListWidget:

item = self.listWidget.takeItem(self.listWidget.currentRow())
item = None
音盲 2024-12-12 12:22:25

这很奇怪,没有一些直接的方法可以从 QListWidget 中删除项目......
试试这个:

listWidget = self.ListDialog.ContentList
model = listWidget.model()
for selectedItem in listWidget.selectedItems():
    qIndex = listWidget.indexFromItem(selectedItem)
    print 'removing : %s' %model.data(qIndex).toString()
    model.removeRow(qIndex.row())

That's weird there isn't some direct way to delete items from QListWidget ...
Try this:

listWidget = self.ListDialog.ContentList
model = listWidget.model()
for selectedItem in listWidget.selectedItems():
    qIndex = listWidget.indexFromItem(selectedItem)
    print 'removing : %s' %model.data(qIndex).toString()
    model.removeRow(qIndex.row())
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文