2014-03-27 98 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_()) 
相關問題