获取给定一个单元格的所有行值被选中 QTableView
Get All Row Values Given One Cell Is Selected QTableView
我正在使用 PyQt5。我有一个 QTableView 如下:
1 a1 b1 c1
2 a2 b2 c2
3 a3 b3 c3
我知道如何将所选项目的文本作为列表获取。
但我需要那些选定项目的整行。
想象一下,选择了 c1 和 b3。现在我得到 [c1, b3]
,但我需要的是一个字典或列表列表:
selected = {1:[a1,b1,c1], 2:[a3,b3,c3]}
ór
selected = [[a1,b1,c1],[a3,b3,c3]}
我用来获取 [c1, b3] 的代码如下:
selection = self.pandasTV.selectionModel()
indexes = selection.selectedIndexes()
cells_data = []
for i, index in enumerate(indexes):
cells_data.append(self.model.data(index))
解决方案是访问所选索引的行兄弟。
selection = self.pandasTV.selectionModel()
indexes = <b>selection.selectedRows()</b>
cells_data = []
columns = range(self.model.columnCount())
for index in indexes:
row = index.row()
cells_data.append([index.sibling(row, c).data() for c in columns])
请注意,自 Qt 5.11 起,您可以使用 index.siblingAtColumn(c).data()
。
我正在使用 PyQt5。我有一个 QTableView 如下:
1 a1 b1 c1
2 a2 b2 c2
3 a3 b3 c3
我知道如何将所选项目的文本作为列表获取。
但我需要那些选定项目的整行。
想象一下,选择了 c1 和 b3。现在我得到 [c1, b3]
,但我需要的是一个字典或列表列表:
selected = {1:[a1,b1,c1], 2:[a3,b3,c3]}
ór
selected = [[a1,b1,c1],[a3,b3,c3]}
我用来获取 [c1, b3] 的代码如下:
selection = self.pandasTV.selectionModel()
indexes = selection.selectedIndexes()
cells_data = []
for i, index in enumerate(indexes):
cells_data.append(self.model.data(index))
解决方案是访问所选索引的行兄弟。
selection = self.pandasTV.selectionModel()
indexes = <b>selection.selectedRows()</b>
cells_data = []
columns = range(self.model.columnCount())
for index in indexes:
row = index.row()
cells_data.append([index.sibling(row, c).data() for c in columns])
请注意,自 Qt 5.11 起,您可以使用 index.siblingAtColumn(c).data()
。