我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
优 质 教 程 推 荐:👉👉 Python爬虫从入门到入狱系列 合集👈👈
QTableWidget_项处理_表格控件
-
- QTableWidget_项处理_表格控件
-
- 描述
- 功能作用
-
- 常用方法
- 常用信号
- 补充:QTableWidgetItem
-
- 描述
- 功能作用
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 # 获得表格控