QTableWidget是qt和pyqt程序中常用的显示数据表格的控件。
用法:
1.创建QTableWidget对象,然后设置列数和行数。
2.设置每一列标题。
3.添加数据项addItem()函数。
4.将数据通过QTableWidgetItem对象放入第row行和第col列的单元格里面。这里行和列都是从0开始的。
常用函数
setROwCount(int row) | 设置QTableWidget表格控件的行数 |
setColumnCount(int col) | 设置QTableWidget表格控件的列数 |
setHorizontalHeaderLabels() | 设置QTableWidget表格控件的水平标签 |
setVerticalHeaderLabels() | 设置QTableWidget表格控件的垂直标签 |
setItem(int ,int ,QTableWidgetItem) | 在QTableWidget表格控件的每个选项的单元控件内添加控件 |
horizontalHeader() | 获得QTableWidget表格控件的表格头,以便执行隐藏 |
rowCount() | 获得QTableWidget表格控件的行数 |
columnCount() | 获得QTableWidget表格控件的列数 |
setEditTriggers(EditTriggers triggers) | 设置表格是否可以编辑,设置表格的枚举值 |
setSelectionBehavior | 设置表格的选择行为 |
setTextAlignment() | 设置单元格内文本的对齐方式 |
setSpan(int row,int column,int rowSpanCount,int columnSpanCount) | 合并单元格,要改变单元格的第row行,column列,要合并rowSpancount行数和columnSpanCount列数。其中row表示要改变的行数, column表示要改变的列数,rowSpanCount表示需要合并的行数,columnSpanCount表示需要合并的列数。 |
setShowGrid() | 在默认情况下表格的显示是有网格的,可以设置True或False用于是否显示,默认True |
setColumnWidth(int column,int width) | 设置单元格行的宽度 |
setRowHeight(int row,int height) | 设置单元格列的高度 |
#创建qtablewidget对象
self.tableWidget = QtWidgets.QTableWidget(widget)
#设置表格行数,列数
self.tableWidget.setColumnCount(4) #列
self.tableWidget.setRowCount(3) #行
#设置列标题、行标题
self.tableWidget.setHorizontalHeaderLabels(['id','name']) #列
self.tableWidget.setVerticalHeaderLabels(['1','2']) #行
#表格横向可伸缩
self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
#表格只读,用户双击不可编辑
self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
#表格加载内容
for i in range(len(items)):
item = items[i]
ow = self.tableWidget.rowCount()
self.tableWidget.insertRow(row)
for j in range(len(item)):
item = QTableWidgetItem(str(items[i][j]))
self.tableWidget.setItem(row,j,item)
#表格标题字体加粗
font = self.tableWidget.horizontalHeader().font()
font.setBold(True)
self.tableWidget.horizontalHeader().setFont(font)
#设置单元格字体颜色和背景颜色
for i in range(len(items)):
each_item = items[i]
row = self.tableWidget.rowCount()
self.tableWidget.insertRow(row)
for j in range(len(each_item)):
item = QTableWidgetItem(str(items[i][j]))
if j != len(each_item) -1:
item.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
item.setForeground(QBrush(QColor(255,0,0))) #设置除最后一列外的文字颜色为红色
else:
item.setBackground(QBrush(QColor(0,255,0))) #设置最后一列的背景色为绿色
self.tableWidget.setItem(row,j,item)
参考链接:
[ PyQt入门教程 ] PyQt5中数据表格控件QTableWidget使用方法 - 锅边糊 - 博客园 (cnblogs.com)