PyQt5中的QTableWidget可以帮助开发者以表格形式显示数据,它可以显示多行多列的表格,支持插入删除行列,改变行列大小,设置表格头等操作。QTableWidget的使用非常简单,可以快速的实现表格的显示和操作。
1. 创建QTableWidget
我们需要创建一个QTableWidget对象,可以使用PyQt5中的QTableWidget()函数:
tableWidget = QTableWidget()
该函数接受三个参数,第一个参数为行数,第二个参数为列数,第三个参数为父组件,默认为None,表示不使用父组件,如果使用父组件,可以传入父组件的对象:
tableWidget = QTableWidget(3, 4, parent)
这样就创建了一个3行4列的QTableWidget对象,我们可以使用QTableWidget对象的方法来设置表格的样式,添加表格数据等。
2. 设置表格样式
QTableWidget的setRowCount()和setColumnCount()方法可以设置表格的行数和列数,setHorizontalHeaderLabels()和setVerticalHeaderLabels()方法可以设置表格的行头和列头,setItem()方法可以设置表格中某个单元格的内容:
tableWidget.setRowCount(3) tableWidget.setColumnCount(4) tableWidget.setHorizontalHeaderLabels(['列1', '列2', '列3', '列4']) tableWidget.setVerticalHeaderLabels(['行1', '行2', '行3']) tableWidget.setItem(0, 0, QTableWidgetItem('单元格内容1')) tableWidget.setItem(0, 1, QTableWidgetItem('单元格内容2')) tableWidget.setItem(0, 2, QTableWidgetItem('单元格内容3')) tableWidget.setItem(0, 3, QTableWidgetItem('单元格内容4'))
QTableWidget还提供了一些更复杂的样式设置方法,比如setColumnWidth()可以设置某一列的宽度,setRowHeight()可以设置某一行的高度,setSelectionMode()可以设置表格的选择模式等。
3. 插入和删除行列
QTableWidget提供了insertRow()和insertColumn()方法可以插入行和列,removeRow()和removeColumn()方法可以删除行和列:
tableWidget.insertRow(2) tableWidget.insertColumn(3) tableWidget.removeRow(1) tableWidget.removeColumn(2)
4. 改变行列大小
QTableWidget提供了resizeRow()和resizeColumn()方法可以改变行和列的大小:
tableWidget.resizeRow(0, 50) tableWidget.resizeColumn(1, 100)
5. 设置表格头
QTableWidget提供了setHorizontalHeader()和setVerticalHeader()方法可以设置表格的行头和列头:
tableWidget.setHorizontalHeader(QTableWidgetHeader('表头1')) tableWidget.setVerticalHeader(QTableWidgetHeader('表头2'))
6. 示例代码
以上就是PyQt5中QTableWidget的使用方法,下面我们来看一个完整的实例:
from PyQt5.QtWidgets import * app = QApplication([]) tableWidget = QTableWidget(3, 4) tableWidget.setHorizontalHeaderLabels(['列1', '列2', '列3', '列4']) tableWidget.setVerticalHeaderLabels(['行1', '行2', '行3']) tableWidget.setItem(0, 0, QTableWidgetItem('单元格内容1')) tableWidget.setItem(0, 1, QTableWidgetItem('单元格内容2')) tableWidget.setItem(0, 2, QTableWidgetItem('单元格内容3')) tableWidget.setItem(0, 3, QTableWidgetItem('单元格内容4')) tableWidget.resizeRow(0, 50) tableWidget.resizeColumn(1, 100) tableWidget.setHorizontalHeader(QTableWidgetHeader('表头1')) tableWidget.setVerticalHeader(QTableWidgetHeader('表头2')) tableWidget.show() app.exec_()
运行上面的代码,就可以看到一个3行4列的表格,行头和列头分别为“表头1”和“表头2”,第一行的高度为50,第二列的宽度为100,表格中的内容为“单元格内容1”,“单元格内容2”