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

Posted

技术标签:

【中文标题】Python:如何在 PyQt 中查询 QListWidget 中的多个选定项【英文标题】:Python: How to query multiple selected items in QListWidget in PyQt 【发布时间】:2014-03-27 23:01:59 【问题描述】:

有一个启用了 ExtendedSelection 的 QListWidget(可以同时选择多个项目)。单击按钮查询 listWidget.currentItem() 以从 listWidget 获取当前项目。问题:如何获取listWidget中当前选中的所有项目?

from PyQt4 import QtGui, QtCore
import sys, os

class Dialog_01(QtGui.QMainWindow):
    def __init__(self):
        super(QtGui.QMainWindow,self).__init__()

        myQWidget = QtGui.QWidget()
        myBoxLayout = QtGui.QVBoxLayout()
        myQWidget.setLayout(myBoxLayout)
        self.setCentralWidget(myQWidget)

        self.listWidget = QtGui.QListWidget()
        self.listWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)

        for i in range(3):
            item=QtGui.QListWidgetItem()
            name='A'+'%04d'%i
            item.setText(name)                        
            self.listWidget.addItem(item) 

        myBoxLayout.addWidget(self.listWidget)      

        Button_01 = QtGui.QPushButton("Print Current Items")
        Button_01.clicked.connect(self.printCurrentItems)
        myBoxLayout.addWidget(Button_01)


    def printCurrentItems(self):
        print "Current Items are : ", self.listWidget.currentItem()


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    dialog_1 = Dialog_01()
    dialog_1.show()
    dialog_1.resize(720,480)
    sys.exit(app.exec_())

【问题讨论】:

【参考方案1】:

这是工作代码(感谢 user3254944!):

from PyQt4 import QtGui, QtCore
import sys, os

class Dialog_01(QtGui.QMainWindow):
    def __init__(self):
        super(QtGui.QMainWindow,self).__init__()

        myQWidget = QtGui.QWidget()
        myBoxLayout = QtGui.QVBoxLayout()
        myQWidget.setLayout(myBoxLayout)
        self.setCentralWidget(myQWidget)

        self.listWidget = QtGui.QListWidget()
        self.listWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)

        for i in range(3):
            item=QtGui.QListWidgetItem()
            name='A'+'%04d'%i
            item.setText(name)                        
            self.listWidget.addItem(item) 

        myBoxLayout.addWidget(self.listWidget)      

        Button_01 = QtGui.QPushButton("Print Current Items")
        Button_01.clicked.connect(self.printCurrentItems)
        myBoxLayout.addWidget(Button_01)


    def printCurrentItems(self):
        print "Current Items are : ", self.listWidget.selectedItems()


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    dialog_1 = Dialog_01()
    dialog_1.show()
    dialog_1.resize(720,480)
    sys.exit(app.exec_())

【讨论】:

【参考方案2】:

.selectedItems()

C++ 用于 QTableWidget,但同样适用于 QListWidget

QList<QTableWidgetItem*> selectedItems = matrixTable.selectedItems();

【讨论】:

以上是关于Python:如何在 PyQt 中查询 QListWidget 中的多个选定项的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 Python:如何通过 MySQL 查询结果中的单个数据行

pyqt中QMdiArea子窗口关闭的问题

PyQt 中一个按钮的两个快捷键

Python相当于QList c ++的join [重复]

如何在 Python 中使用 PyQt 显示 RGB 图像? [复制]

如何在 QJSEngine 中注册 QList<quint64> 之类的类型?