在QListWidg中获取选定行

2024-06-24 12:55:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Qlistwidget可以选择多个项目。我可以得到一个列表,其中包含listwidget中的所有选定项,但找不到获取相应行列表的方法。要获取列表小部件中选定项的列表,我使用了以下代码:

print [str(x.text()) for x in self.listWidget.selectedItems()]

要检索行,我正在查找如下内容:

a = self.listWidget.selectedIndexes()
print a

但这不管用。我还尝试了一些代码,结果是这样的输出,这不是很有用:

<PyQt4.QtGui.QListWidgetItem object at 0x0000000013048B88>
<PyQt4.QtCore.QModelIndex object at 0x0000000014FBA7B8>

Tags: 项目方法代码textself列表object部件
2条回答

奇怪的输出是因为您正在获取类型为QModelIndexQListWidgetItem的对象。QModelIndex对象有一个获取其行的方法,因此您可以使用:

[x.row() for x in self.listWidget.selectedIndexes()]

获取所有选定索引的列表。

选择索引和QModelIndex就可以了。

liwidg = QtGui.QListWidget()
liwidg.show()
liwidg.setSelectionMode( QtGui.QAbstractItemView.SelectionMode.ExtendedSelection)
liwidg.addItems(["a", "b", "c", "d"])
liwidg.selectedIndexes()

当选择“a”、“b”和“c”时,liwidg.selectedIndexes()给出:

[<PySide.QtCore.QModelIndex(0,0,0xb266478,QListModel(0xb0e6400) )   at 0x0C86EB20>,
 <PySide.QtCore.QModelIndex(1,0,0xb266518,QListModel(0xb0e6400) )   at 0x0C861D78>,
 <PySide.QtCore.QModelIndex(2,0,0xb2843c8,QListModel(0xb0e6400) )   at 0x0C869AF8>]

您可以使用QModelIndex来获取所需的任何信息。

sel0 = liwidg.selectedIndexes()[0]
# <PySide.QtCore.QModelIndex(0,0,0xb266478,QListModel(0xb0e6400) )   at 0x0C85B530>

print(sel0.data())
print(sel0.row())
print(sel0.column())

印刷品:

'a'
0
0

这对我有用。

相关问题 更多 >