PyQt5 - QTableWidget 用法

本文详细介绍了PyQt中QTableWidget的使用方法,包括设置行列数、修改列宽、添加勾选框、设置交替行颜色、给指定单元格设置数据及获取行列数等操作。通过实例演示了如何初始化QTableWidget,调整其外观,并实现与用户交互的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

e.g:
self.tableWidgetCLI = QtWidgets.QTableWidget(Form)

QTableWidget 设置行列数

#设置表格的行数
self.tableWidget.setRowCount(row_num)
#设置表格的列数
self.tableWidget.setColumnCount(col_num)

QTableWidget 修改列宽

# 自定义列宽
self.tableWidgetCLI.setColumnWidth(0, 20)
# 设置列宽自动分配
self.tableWidgetCLI.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
# 用户只能使用resizeSection()以编程方式调整大小。节大小默认为defaultSectionSize。
self.tableWidgetCLI.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeToContents

QTableWidget 添加勾选框

from PyQt5.QtWidgets import QCheckBox
# 插入单选框
checkBox = QCheckBox()
self.tableWidgetCLI.setCellWidget(x, 0, checkBox) #setCellWidget: 在指定单元格内放置控件

设置 QTableWidget 勾选框QCheckBox的勾选状态

checkBox = QTableWidgetItem()
# 默认不勾选
checkBox.setCheckState(QtCore.Qt.Unchecked) 
# 默认勾选
checkBox.setCheckState(QtCore.Qt.Checked) 

获取 QTableWidget 勾选框QCheckBox的勾选状态

# 勾选时非0,未勾选为0
check_stats = self.tableWidgetCLI.item(1,0).checkState()
print('check_stats : ', check_stats )
item0 = self.tableWidgetCLI.item(0,0)
print('state0: ', item0.checkState())

QTableWidget 交替行颜色

self.tableWidgetCLI.setAlternatingRowColors(True)      # 交替行颜色

QTableWidget 给指定单元格设置数据

self.tableWidgetCLI.setItem(x, y, QtWidgets.QTableWidgetItem('*'*6)) #setItem: 给指定单元格设置数据

 

QTableWidget 查看行列数

# 查看行数
self.tableWidgetCLI.rowCount()
# 查看列数
self.tableWidgetCLI.columnCount()
    self.tableWidgetCLI.itemClicked.connect(self.outSelect)  # 单击获取单元格中的内容
def outSelect(self, Item=None):
    if Item==None:
        return
    print(Item.text())

 

 

 

 

 

 

### PyQt5QTableWidget 的使用方法 #### 导入必要的模块 为了在 PyQt5 应用程序中使用 `QTableWidget`,需要先导入 `PyQt5.QtWidgets` 模块中的相关内容。以下是基本的导入语句[^1]: ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem ``` #### 创建主窗口并初始化 QTableWidget 创建一个基于 `QMainWindow` 或其他窗口类的应用程序实例,并在其上添加 `QTableWidget` 控件。以下是一个简单的例子来展示如何设置表格的基本结构: ```python class MainWindow(QMainWindow): def __init__(self): super().__init__() # 初始化 QTableWidget 并设置行列数 self.table_widget = QTableWidget(4, 3) # 设置为 4 行 3 列 # 添加表头信息 headers = ["列1", "列2", "列3"] self.table_widget.setHorizontalHeaderLabels(headers) # 插入数据到单元格 self.table_widget.setItem(0, 0, QTableWidgetItem("数据1")) self.table_widget.setItem(0, 1, QTableWidgetItem("数据2")) self.table_widget.setItem(0, 2, QTableWidgetItem("数据3")) # 将 QTableWidget 添加到主窗口布局中 self.setCentralWidget(self.table_widget) app = QApplication([]) window = MainWindow() window.show() app.exec_() ``` 上述代码展示了如何通过 `setItem()` 方法向特定单元格插入文本内容。 #### 获取和修改单元格的内容 可以通过 `item(row, column)` 方法访问指定位置的单元格对象,并进一步操作其属性或值[^3]: ```python # 访问第 0 行第 0 列的数据项 cell_item = self.table_widget.item(0, 0) if cell_item is not None: print(cell_item.text()) # 输出该单元格的文字内容 ``` 如果希望动态更新某个单元格的内容,则可重新调用 `setItem()` 函数或者直接更改现有项目的文字: ```python new_text = "新数据" existing_item = self.table_widget.item(0, 0) if existing_item is not None: existing_item.setText(new_text) else: self.table_widget.setItem(0, 0, QTableWidgetItem(new_text)) ``` #### 增加复杂功能 (如分页、全选等) 对于更复杂的场景需求,比如带有分页条目的显示以及支持多行选择等功能,可以参考高级实现案例[^4]。这里提供一段简化版的支持单击全选按钮的功能片段作为示范: ```python import sys from PyQt5.QtCore import Qt from PyQt5.QtGui import QBrush, QColor def toggle_select_all(table_widget): """切换所有行的选择状态""" selected = table_widget.selectionModel().hasSelection() and \ all([table_widget.isRowSelected(i) for i in range(table_widget.rowCount())]) flag = False if selected else True for row_index in range(table_widget.rowCount()): table_widget.selectRow(row_index) if flag else table_widget.clearSelection() class EnhancedTableWindow(QMainWindow): def __init__(self): super().__init__() self.table_widget = QTableWidget(8, 4) self.table_widget.setSelectionBehavior(QTableWidget.SelectRows) # 设定行为模式为按整行选取 self.table_widget.horizontalHeader().setStretchLastSection(True) # 自动拉伸最后一节宽度至合适大小 select_button = QPushButton('全选/取消') select_button.clicked.connect(lambda: toggle_select_all(self.table_widget)) layout = QVBoxLayout() layout.addWidget(select_button) layout.addWidget(self.table_widget) central_widget = QWidget() central_widget.setLayout(layout) self.setCentralWidget(central_widget) if __name__ == '__main__': app = QApplication(sys.argv) window = EnhancedTableWindow() window.resize(600, 400) window.show() sys.exit(app.exec_()) ``` 此脚本定义了一个辅助函数用于处理“全选”逻辑,并将其绑定到了界面上的一个按钮事件之中。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值