【问题标题】:How to get selected header label from QTableWidget item?如何从 QTableWidget 项目中获取选定的标题标签?
【发布时间】:2020-06-29 07:12:09
【问题描述】:

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

我尝试了QTableWidget.selectionModel().selectedIndexes()QTableWidget.itemFromIndex() 方法。我只能获取表格内的项目而不是标题标签。

这是我的桌子。我可以在“产品编号”、“产品选项”和“标价 (USD)”标题下获取项目,但无法获取这些标题。

【问题讨论】:

    标签: python pyqt pyqt5 qtablewidget


    【解决方案1】:

    您可以将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() 方法。

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

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

    【讨论】:

    • AttributeError: 'NoneType' 对象没有属性 'text'。
    • @Ugurcan 这可能是因为特定行中没有垂直标题。我编辑了答案
    • 谢谢。我是 PyQT 和 QT 的新手。有效。 ´columns = set(cell.column() for cell in self.table.selectedIndexes()) # 设置删除重复项,否则使用列表标签 = [self.table.horizo​​ntalHeaderItem(c).text() for c in columns ]´
    猜你喜欢
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多