2014-03-27 99 views
3

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

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

.selectedItems()

C++为QTableWidget的,但同为QListWidget

QList<QTableWidgetItem*> selectedItems = matrixTable.selectedItems(); 
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_()) 
相关问题