You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在QTableWidget中仅获取存在值的行/列数量

PyQt5 QTableWidget 获取非空行列数方法

QTableWidget 没有内置的直接获取非空列/行数量的接口,你可以通过遍历单元格自行判断实现,以下是可直接使用的代码:

获取非空列数量

遍历所有列,判断每列是否存在至少一个非空单元格:

def get_non_empty_column_count(table):
    total_col = table.columnCount()
    total_row = table.rowCount()
    valid_col_count = 0
    for col in range(total_col):
        has_value = False
        for row in range(total_row):
            cell_item = table.item(row, col)
            # 排除单元格为空、单元格内容为空白的情况
            if cell_item and cell_item.text().strip():
                has_value = True
                break
        if has_value:
            valid_col_count += 1
    return valid_col_count

# 调用示例
non_empty_cols = get_non_empty_column_count(self.tableWidget)

你当前20列仅前2列有数据的场景下,调用后返回值就是2,符合你的需求。

获取非空行数量

逻辑和获取非空列一致,优先遍历行判断即可:

def get_non_empty_row_count(table):
    total_col = table.columnCount()
    total_row = table.rowCount()
    valid_row_count = 0
    for row in range(total_row):
        has_value = False
        for col in range(total_col):
            cell_item = table.item(row, col)
            if cell_item and cell_item.text().strip():
                has_value = True
                break
        if has_value:
            valid_row_count += 1
    return valid_row_count

# 调用示例
non_empty_rows = get_non_empty_row_count(self.tableWidget)

可选优化

如果你的表格数据量较大、需要频繁获取非空行列数,可以额外维护两个计数变量,在每次新增/修改/删除单元格内容时同步更新计数,不需要每次全量遍历表格,性能更高。

注意:如果你是通过setCellWidget()往单元格里插入控件存储内容,需要把上面判断逻辑里的item.text()替换为对应控件的取值逻辑即可。


内容的提问来源于stack exchange,提问作者E. Artemis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 03:15:03