Как получить выбранную метку заголовка из элемента QTableWidget? - PullRequest
0 голосов
/ 18 марта 2020

У меня есть QTableWidget предмет. Я заполняю этот пункт данными pandas DataFrame. Я должен напечатать выбранные значения столбца в виде отчета. Я могу легко распечатать данные из DataFrame. Однако мне нужно знать метки verticalHeader (QTableWidget) для получения данных из DataFrame. Как я могу получить выбранные метки заголовков от QTableWidget?

Я пробовал QTableWidget.selectionModel().selectedIndexes() и QTableWidget.itemFromIndex() метод. Я мог получать только элементы внутри таблицы, а не заголовки.

Вот моя таблица. Я могу получить товары под заголовками «Product No», «Product Option» и «List Price (USD)», но не могу получить эти заголовки.

1 Ответ

0 голосов
/ 18 марта 2020

Вы можете использовать QTableWidget.verticalHeaderItem() с текущей строкой таблицы. Если все выделенные ячейки находятся в одной строке, вы можете сделать это (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]

В случае, если строка не содержит элемент вертикального заголовка, используйте метод text() только после того, как вы проверили, что возвращаемый элемент не равен None.

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

Редактировать: Это заголовки горизонтальные , а не вертикальные. В этом случае используйте взамен table.horizontalHeaderItem() и получите столбцы ячеек.

...