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

时间:2016-07-17 17:08:48

标签: python pyqt python-3.4 pyqt5 qlistwidget

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

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_()

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

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

我用这个解决了它

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