如何从 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()
并获取单元格列。
我有一个 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()
并获取单元格列。