如何从 QTableWidget 项目中获取选定的 header 标签?

How to get selected header label from QTableWidget item?

我有一个 QTableWidget 项目。我用 pandas DataFrame 数据填充此项。我必须将选定的列值打印为报告。我可以轻松地从 DataFrame 打印数据。但是,我需要知道 verticalHeader (QTableWidget) 个标签才能从 'DataFrame' 获取数据。如何从 QTableWidget 中获取选定的 header 标签?

我尝试了QTableWidget.selectionModel().selectedIndexes()QTableWidget.itemFromIndex()方法。我只能在 table 而不是 header 标签内获取项目。

这是我的table。我可以获得 'Product No'、'Product Option' 和 'List Price (USD)' header 下的项目,但我无法获得这些 headers.

您可以将 QTableWidget.verticalHeaderItem() 与 table 的当前行一起使用。如果选中的单元格都在同一行,你可以这样做(table指的是QTableWidget)。

row = table.currentRow()
label = table.verticalHeaderItem(row).text()

或者如果在多行中选择了单元格:

rows = set(cell.row() for cell in table.selectedIndexes()) # set to remove duplicates, otherwise use a list
labels = [table.verticalHeaderItem(r).text() for r in rows]

如果某行不包含垂直 header 项,请仅在检查返回的项不是 None 后才使用 text() 方法。

headers = [table.verticalHeaderItem(r) for r in rows]
labels = [x.text() for x in headers if x is not None]

编辑: 这些是 水平 header 项目,不是垂直的。在这种情况下,请改用 table.horizontalHeaderItem() 并获取单元格列。