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 查询结果中的单个数据行