简体   繁体   English

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

[英]How to get selected header label from QTableWidget item?

I have a QTableWidget item.我有一个QTableWidget项目。 I fill this item with pandas DataFrame data.我用DataFrame数据填充了这个项目。 I must print selected column values as a report.我必须将选定的列值打印为报告。 I can easily print data from DataFrame.我可以轻松地从 DataFrame 打印数据。 However, I need to know verticalHeader ( QTableWidget ) labels to get data from 'DataFrame'.但是,我需要知道verticalHeader ( QTableWidget ) 标签才能从“DataFrame”获取数据。 How can I get selected header labels from QTableWidget ?如何从QTableWidget获取选定的标题标签?

I tried QTableWidget.selectionModel().selectedIndexes() and QTableWidget.itemFromIndex() method.我尝试了QTableWidget.selectionModel().selectedIndexes()QTableWidget.itemFromIndex()方法。 I could only get items inside of the table not header labels.我只能获取表格内的项目而不是标题标签。

Here is my table.这是我的桌子。 I can get items under 'Product No', 'Product Option' and 'List Price (USD)' headers but I can't get these headers.我可以在“产品编号”、“产品选项”和“标价(美元)”标题下获取项目,但我无法获取这些标题。

You can use QTableWidget.verticalHeaderItem() with the table's current row.您可以将QTableWidget.verticalHeaderItem()与表格的当前行一起使用。 If the selected cells are all in the same row, you could do this ( table refers to the QTableWidget).如果选定的单元格都在同一行中,您可以这样做( table指的是 QTableWidget)。

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

Or if cells are selected over multiple rows:或者,如果在多行中选择单元格:

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]

In the case that a row does not contain a vertical header item, use the text() method only after you've checked that item returned is not None.如果一行不包含垂直标题项,请仅在检查返回的项不是 None 后才使用text()方法。

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

Edit: Those are horizontal header items, not vertical.编辑:那些是水平标题项目,而不是垂直。 In that case use table.horizontalHeaderItem() instead and get cell columns.在这种情况下,请改用table.horizontalHeaderItem()并获取单元格列。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM