202.PyQt5_QTableWidget_项处理_表格控件

无奋斗不青春

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
优 质 教 程 推 荐:👉👉 Python爬虫从入门到入狱系列 合集👈👈

分隔线

QTableWidget_项处理_表格控件

描述

* QTableWidget是PyQt5程序中常用的显示数据表格组件类
* QTableWidget是QTableView的子类,它使用标准的数据模型,并且其单元数据是通过QTableWidgetItem对象来实现的
* 表格控件最上面一排是只读的水平表头,最左边一列是只读的垂直表头
* 表头又可以细分为多个分段(section)
    * 行表头(水平表头)的分段就是表格各个列的列首
    * 列表头(垂直表头)的分段就是表格各个行的行首,默认标题为行号
* 行表头和列表头一般是不可编辑的,可以隐藏、可以设置宽度和高度
* 除行表头和列表头之外的表格区域是工作区,工作区呈规则的网格状,如同一个二维数组
* 每个网格称为一个单元格(cell),每个单元格有一个行号、列号
* 在QTableWidget表格中,每一个单元格是一个QTableWidgetItem对象,可以设置文字内容、字体、前景色、背景色、图标等,可以设置编辑和显示标志。
* 每个单元格还可以存储一个或多个自定义数据
  • 继承自:QTableView

功能作用

  • 表格控件的有很多名字相似的两套函数或信号,比如:
    • 设置当前高亮单元格函数 setCurrentCell(int row, int column)
    • 设置当前高亮条目函数: setCurrentItem(QTableWidgetItem * item)
  • 这两个函数名字很类似,二者最主要的区别就是:
    • 名字带 Cell 的函数是基于单元格的,对 NULL 空单元格也可以使用;
    • 名字带 Item 的函数,必须是填充了实体条目的单元格,针对实际存在的单元格条目操作
常用方法
  • 构造方法
    QTableWidget(parent)                    # 创建一个空表格对象的同时设置父对象
    # 需要通过setROwCount、setColumnCount来设置表格行列数
    
    QTableWidget(rows, columns, parent)     # 创建一个指定行列数表格对象的同时设置父对象
    
  • 行数、列数操作
    setROwCount(int row)                    # 设置QTableWidget表格控件的行数
    rowCount()                              # 获得QTableWidget表格控件的行数
    
    setColumnCount(int col)                 # 设置QTableWidget表格控件的列数
    columnCount()                           # 获得QTableWidget表格控件的列数
    
  • 行高与列宽
    resizeColumnsToContents()               # 设置所有列的列宽跟随内容的宽度
    resizeColumnToContents(column)          # 设置指定列的列宽跟随内容的宽度
    
    resizeRowsToContents()                  # 设置所有行的行高跟随内容的高度
    resizeRowToContents(row)                # 设置指定行的行高跟随内容的高度
    
    setColumnWidth(column, width)           # 给指定列设置固定宽度
    
    # 通过horizontalHeader()方法获取到表头控件,再通过setSectionResizeMode() 方法设置列的宽度模式
    # horizontalHeader().setDefaultSectionSize(80)                              # 所有列设置固定列宽
    # horizontalHeader().setSectionResizeMode(QHeaderView.Interactive)          # 用户可调整,默认值为setDefaultSectionSized的值
    # horizontalHeader().setSectionResizeMode(QHeaderView.Custom)               # 用户可调整,默认值为setDefaultSectionSized的值
    # horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)              # 用户不可调整,自动平分适应可用区域
    # horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)     # 用户不可调整,自动适应内容的宽度
    # horizontalHeader().setSectionResizeMode(QHeaderView.Fixed)                # 用户不可调整,默认值为setDefaultSectionSized的值
    
    # 示例:按比例设置列宽,表格不要通过表头对象设置列宽适应可用区域
    def column_width(self, tableWidth):
        # 设置每一列的宽度占比
        col_percentages = [20, 20, 30, 10, 10]
        for index, percent in enumerate(col_percentages):
            # 根据表格宽度计算列宽
            col_width = int(tableWidth * (percent / 100))
            # 设置每一列的宽度
            self.table_name.setColumnWidth(index, col_width)
            
    
  • 表头操作
    # 水平表头操作
    setHorizontalHeaderItem(column, QTableWidgetItem)       # 通过Item对象设置指定列的水平标签(表头)
    setHorizontalHeaderLabels(Iterable[str])                # 通过迭代器设置表格控件多列的水平标签(表头)
    
    horizontalHeader() -> QHeaderView                       # 获得表格控件的水平标签(表头)对象
    horizontalHeaderItem(column)-> QTableWidgetItem         # 获得表格控件指定列的水平标签(表头)条目
    
    takeHorizontalHeaderItem(column) -> QTableWidgetItem    # 移除指定列的水平标签(表头)条目
    
    horizontalHeader().setVisible(False)                    
  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失心疯_2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值