当前位置: 首页 > news >正文

Pyqt 的QTableWidget组件

QTableWidget 是 PyQt6 中的一个表格控件,用于显示和编辑二维表格数据。它继承自 QTableView,提供了更简单的方式来处理表格数据,适合用于需要展示结构化数据的场景。


1. 常用方法

1.1 构造函数

  • QTableWidget(parent: QWidget = None):创建一个空的表格控件。

  • QTableWidget(rows: int, columns: int, parent: QWidget = None):创建一个指定行数和列数的表格控件。

1.2 设置行列数

  • setRowCount(rows: int):设置表格的行数。

  • setColumnCount(columns: int):设置表格的列数。

  • rowCount() -> int:获取表格的行数。

  • columnCount() -> int:获取表格的列数。

1.3 设置表头

  • setHorizontalHeaderLabels(labels: List[str]):设置水平表头的标签。

  • setVerticalHeaderLabels(labels: List[str]):设置垂直表头的标签。

  • horizontalHeader() -> QHeaderView:获取水平表头对象。

  • verticalHeader() -> QHeaderView:获取垂直表头对象。

1.4 设置单元格内容

  • setItem(row: int, column: int, item: QTableWidgetItem):设置指定单元格的内容。

  • item(row: int, column: int) -> QTableWidgetItem:获取指定单元格的内容。

  • takeItem(row: int, column: int) -> QTableWidgetItem:移除指定单元格的内容并返回。

1.5 设置单元格属性

  • setCellWidget(row: int, column: int, widget: QWidget):在指定单元格中放置一个控件(如按钮、下拉框等)。

  • cellWidget(row: int, column: int) -> QWidget:获取指定单元格中的控件。

  • setSpan(row: int, column: int, rowSpan: int, columnSpan: int):合并单元格。

1.6 选择模式

  • setSelectionMode(mode: QAbstractItemView.SelectionMode):设置选择模式(如单选、多选等)。

  • setSelectionBehavior(behavior: QAbstractItemView.SelectionBehavior):设置选择行为(如选择行、选择列等)。

1.7 信号

  • cellChanged(row: int, column: int):当单元格内容发生变化时触发。

  • cellClicked(row: int, column: int):当单元格被点击时触发。

  • cellDoubleClicked(row: int, column: int):当单元格被双击时触发。


2. 例子

import os
import sys
import webbrowserimport qt_material
from PyQt6.QtWidgets import *
from PyQt6.QtCore import *class Window(QWidget):def __init__(self):super(Window, self).__init__()self.resize(400, 300)self.init_widget()self.init_signal()self.init_getdata()self.init_layout()def init_widget(self):# tablewidgetself.table = QTableWidget()self.table.setColumnCount(2)self.table.setHorizontalHeaderLabels(['网站', 'Url'])self.table.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Stretch)self.table.setAlternatingRowColors(True)self.table.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)  # 无法编辑def init_getdata(self):row_count = self.table.rowCount()self.table.setRowCount(row_count + 1)self.table.setItem(0, 0, QTableWidgetItem('百度'))self.table.setItem(0, 1, QTableWidgetItem('https://www.baidu.com/'))row_count = self.table.rowCount()self.table.setRowCount(row_count + 1)self.table.setItem(1, 0, QTableWidgetItem('腾讯视频'))self.table.setItem(1, 1, QTableWidgetItem('https://v.qq.com/'))def init_signal(self):self.table.cellDoubleClicked.connect(self.open_url)  # 双击打开网页def init_layout(self):v_layout = QVBoxLayout()v_layout.addWidget(self.table)self.setLayout(v_layout)def open_url(self, row, column):print(f'{row} {column}')if int(column) == 1:url = self.table.item(row, column).text()webbrowser.open(url)if __name__ == '__main__':os.environ["QT_IM_MODULE"] = "ibus"  # mac系统解决输入法不兼容app = QApplication(sys.argv)qt_material.apply_stylesheet(app, theme='light_pink.xml')window = Window()window.show()sys.exit(app.exec())

3. 总结

优点

  • 简单易用:提供了直接操作表格数据的接口。

  • 灵活性高:支持动态加载数据、编辑单元格内容和嵌入控件。

  • 功能丰富:支持表头设置、单元格合并、选择模式等功能。

适用场景

  • 数据展示(如成绩表、库存表)。

  • 数据编辑(如员工信息管理、订单管理)。

  • 动态数据加载(如数据库查询结果、CSV 文件数据)。

http://www.lryc.cn/news/533508.html

相关文章:

  • 4. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--什么是微服务--微服务设计原则与最佳实践
  • 网络安全威胁框架与入侵分析模型概述
  • 树和二叉树_7
  • 不同标签页、iframe或者worker之间的广播通信——BroadcastChannel
  • 开源CodeGPT + DeepSeek-R1 是否可以替代商业付费代码辅助工具
  • AUTOSAR汽车电子嵌入式编程精讲300篇-基于FPGA的CAN FD汽车总线数据交互系统设计
  • STC51案例操作
  • 多光谱技术在华为手机上的应用发展历史
  • C语言:函数栈帧的创建和销毁
  • NLP_[2]_文本预处理-文本数据分析
  • 【工具篇】深度揭秘 Midjourney:开启 AI 图像创作新时代
  • 从O(k*n)到O(1):如何用哈希表终结多层if判断的性能困局
  • 视频采集卡接口
  • 蓝桥杯真题 - 像素放置 - 题解
  • vue基础(三)
  • 使用Python开发PPTX压缩工具
  • ubuntu24.04安装布置ros
  • SQL 秒变 ER 图 sql转er图
  • 【AI知识点】如何判断数据集是否噪声过大?
  • 网络安全治理架构图 网络安全管理架构
  • 如何写出优秀的单元测试?
  • 数据留痕的方法
  • 机器学习数学基础:19.线性相关与线性无关
  • ArgoCD实战指南:GitOps驱动下的Kubernetes自动化部署与Helm/Kustomize集成
  • JVM虚拟机以及跨平台原理
  • 【AIGC提示词系统】基于 DeepSeek R1 + ClaudeAI 易经占卜系统
  • 电路笔记 : opa 运放失调电压失调电流输入偏置电流 + 反向放大器的平衡电阻 R3 = R1 // R2 以减小输出直流噪声
  • ScrapeGraphAI颠覆传统网络爬虫技术
  • 通过多层混合MTL结构提升股票市场预测的准确性,R²最高为0.98
  • java将list转成树结构