如果选择了多个项目,如何在 QListWidget 中打印多个项目

Posted

技术标签:

【中文标题】如果选择了多个项目,如何在 QListWidget 中打印多个项目【英文标题】:How to print more than one items in QListWidget if more than one items selected 【发布时间】:2016-07-17 17:08:47 【问题描述】:

我有 QListWidget 并且那里有字符串,当我选择一个字符串时,我想显示它的索引号和文本。但问题是,如果我选择超过 1 个项目,它不会显示所有索引。它只显示一个。

from PyQt5.QtWidgets import *
import sys

class Pencere(QWidget):
    def __init__(self):
        super().__init__()
        self.layout = QVBoxLayout(self)

        self.listwidget = QListWidget(self)
        self.listwidget.addItems(["Python","Ruby","Go","Perl"])
        self.listwidget.setSelectionMode(QAbstractItemView.MultiSelection)


        self.buton = QPushButton(self)
        self.buton.setText("Ok")
        self.buton.clicked.connect(self.but)

        self.layout.addWidget(self.listwidget)
        self.layout.addWidget(self.buton)

    def but(self):
        print (self.listwidget.currentRow()+1)


uygulama = QApplication(sys.argv)
pencere = Pencere()
pencere.show()
uygulama.exec_()

如果我选择超过 1 个项目,如何显示所有项目名称和索引?

【问题讨论】:

【参考方案1】:

我用这个解决了

def but(self):
    x = self.listwidget.selectedItems()
    for y in x:
        print (y.text())

【讨论】:

【参考方案2】:

您需要使用QListWidget 的selectedItems() 函数,它返回一个列表。 currentRow() 仅返回一个整数,并且仅用于单选实例。

获得 QListWidgetItems 列表后,您可以对每个项目使用 text() 函数来检索文本。

获取索引稍微复杂一些,您必须使用QListWidget.indexFromItem() 从原始QListWidgetItem 获取QModelIndex 对象,然后使用QModelIndex.row() 函数。


来源:http://pyqt.sourceforge.net/Docs/PyQt4/qlistwidget.html#selectedItems注意:您在标签中指定了 PyQt5,但在这种情况下 QListWidget 的 API 保持不变;如果您想确定,请查看C++ API docs。

【讨论】:

但是如何使用该方法打印所选项目的索引和字符串? 它像这样打印[<PyQt5.QtWidgets.QListWidgetItem object at 0x02DEEDA0>, <PyQt5.QtWidgets.QListWidgetItem object at 0x02DEEDF0>]。例如如何打印Python,Ruby 文本见API of QListWidgetItem,尤其是text()函数,索引使用QListWidget的indexFromItem()及其各自的row()函数。 selectedItems().text() 不工作。如果您在回答中举个例子,我认为到目前为止我们已经解决了这个问题。提供文档不起作用。 不是selectedItems().text()text()QListWidgetItem 的成员函数。所以你想做类似[itm.text() for itm in self.listwidget.selectedItems()] 的事情来把它作为一个字符串/QString 列表

以上是关于如果选择了多个项目,如何在 QListWidget 中打印多个项目的主要内容,如果未能解决你的问题,请参考以下文章

Python:如何在 PyQt 中查询 QListWidget 中的多个选定项

单击并拖动多个项目时,QListWidget 导致分段错误

如何在pyqt5 QlistWidget中选择当前项目

如何控制 QListWidget 选择

如何隐藏 Qt QListView 或 QListWidget 中的选择矩形/虚线?

QlistWidget如何一一选择项目