目录
一:介绍:
二:演示
在 PySide6 中,QTableWidget 是一个用于展示和编辑表格数据的控件。它提供了在窗口中创建和显示表格的功能,并允许用户通过单元格来编辑数据。
要使用 QTableWidget,首先需要创建一个 QTableWidget 对象,并设置其行数和列数。可以通过 setRowCount() 和 setColumnCount() 方法来设置行和列的数量。
一旦创建了表格,可以使用 setItem() 方法将数据添加到表格的单元格中。setItem() 方法接受三个参数:行索引、列索引和 QTableWidgetItem 对象,用于指定要添加到表格中的数据。
除了添加数据,QTableWidget 还提供了其他一些功能,如插入和删除行或列、调整单元格大小等。可以使用 insertRow() 和 insertColumn() 方法来插入行或列,使用 removeRow() 和 removeColumn() 方法来删除行或列。
此外,可以通过设置表格的属性来定制表格的外观和行为。例如,可以使用 setHorizontalHeader() 和 setVerticalHeader() 方法来设置表头,使用 setSortingEnabled() 方法来启用排序功能等。
下面是一个简单的示例代码,演示了如何在 PySide6 中使用 QTableWidget:
import sys
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QTableWidget, QTableWidgetItem
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('数据表格示例')
self.setGeometry(100, 100, 500, 500)
# 创建一个表格
self.table = QTableWidget()
self.table.setRowCount(5) # 设置行数
self.table.setColumnCount(2) # 设置列数
# 添加数据到表格中
for i in range(5):
for j in range(2):
item = QTableWidgetItem(f"行{i + 1}列{j + 1}") # 创建 QTableWidgetItem 对象并设置文本
self.table.setItem(i, j, item) # 将 QTableWidgetItem 对象添加到表格中
# 创建一个按钮来添加行数据
self.add_row_button = QPushButton('添加行数据')
self.add_row_button.clicked.connect(self.add_row)
# 创建一个按钮来添加列数据
self.add_column_button = QPushButton('添加列数据')
self.add_column_button.clicked.connect(self.add_column)
# 创建一个垂直布局并添加控件
layout = QVBoxLayout()
layout.addWidget(self.table) # 添加表格到布局中
layout.addWidget(self.add_row_button) # 添加按钮到布局中
layout.addWidget(self.add_column_button) # 添加按钮到布局中
self.setLayout(layout) # 设置窗口的布局为垂直布局
def add_row(self):
self.table.insertRow(self.table.rowCount()) # 在表格末尾插入一行
def add_column(self):
for i in range(self.table.rowCount()): # 遍历每一行并添加一列数据
item = QTableWidgetItem(f"新列{i + 1}") # 创建 QTableWidgetItem 对象并设置文本
self.table.setItem(i, self.table.columnCount() - 1, item) # 将 QTableWidgetItem 对象添加到表格中当前行的最后一列
self.table.setSpan(i, self.table.columnCount() - 1, 1, 2) # 将当前行的最后一列跨度设置为2,以覆盖新插入的列和原有列
self.table.setColumnWidth(self.table.columnCount() - 1, 100) # 设置新插入列的宽度为100像素
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
ex.show()
sys.exit(app.exec_())