【问题标题】:Python: How to query multiple selected items in QListWidget in PyQtPython:如何在 PyQt 中查询 QListWidget 中的多个选定项
【发布时间】: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_())

【问题讨论】:

    标签: python qlistwidget


    【解决方案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();
      

      【讨论】:

        猜你喜欢
        • 2011-09-10
        • 2018-04-22
        • 1970-01-01
        • 1970-01-01
        • 2013-04-22
        • 1970-01-01
        • 1970-01-01
        • 2021-04-26
        • 2012-05-18
        相关资源
        最近更新 更多