首先看下效果:
代码:
from PyQt4 import QtCore, QtGui import sys if __name__ == '__main__': app = QtGui.QApplication(sys.argv) student_tableview = QtGui.QTableView() student_tableview.setGeometry(300, 300, 650, 230) # 设置列宽不可变动,即不能通过鼠标拖动增加列宽 student_tableview.horizontalHeader().setResizeMode(0, QtGui.QHeaderView.Fixed) student_tableview.horizontalHeader().setResizeMode(1, QtGui.QHeaderView.Fixed) student_tableview.horizontalHeader().setResizeMode(2, QtGui.QHeaderView.Fixed) student_tableview.horizontalHeader().setResizeMode(3, QtGui.QHeaderView.Fixed) student_tableview.horizontalHeader().setResizeMode(4, QtGui.QHeaderView.Fixed) # 设置表格的各列的宽度值 student_tableview.setColumnWidth(0, 100) student_tableview.setColumnWidth(1, 100) student_tableview.setColumnWidth(2, 100) student_tableview.setColumnWidth(3, 100) student_tableview.setColumnWidth(4, 100) # 默认显示行头,如果你觉得不美观的话,我们可以将隐藏 student_tableview.verticalHeader().hide() # 设置选中时为整行选中 student_tableview.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows) # 设置表格的单元为只读属性,即不能编辑 student_tableview.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers) # 如果你用在QTableView中使用右键菜单,需启用该属性 student_tableview.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) # 准备数据模型 student_model = QtGui.QStandardItemModel() student_model.setHorizontalHeaderItem(0, QtGui.QStandardItem("Name")) student_model.setHorizontalHeaderItem(1, QtGui.QStandardItem("NO.")) student_model.setHorizontalHeaderItem(2, QtGui.QStandardItem("Sex")) student_model.setHorizontalHeaderItem(3, QtGui.QStandardItem("Age")) student_model.setHorizontalHeaderItem(4, QtGui.QStandardItem("College")) # 在表格中添加行时,我们只需要在model中插入数据即可,一旦model中的数据发生变化,QTabelView显示就会做相应的变动 # 在第一行添加学生张三的个人信息(setItem函数的第一个参数表示行号,第二个表示列号,第三个为要显示的数据) student_model.setItem(0, 0, QtGui.QStandardItem("张三")) student_model.setItem(0, 1, QtGui.QStandardItem("20120202")) student_model.setItem(0, 2, QtGui.QStandardItem("男")) student_model.setItem(0, 3, QtGui.QStandardItem("18")) student_model.setItem(0, 4, QtGui.QStandardItem("土木学院")) student_model.setItem(1, 0, QtGui.QStandardItem("李四")) student_model.setItem(1, 1, QtGui.QStandardItem("20120202")) student_model.setItem(1, 2, QtGui.QStandardItem("男")) student_model.setItem(1, 3, QtGui.QStandardItem("19")) student_model.setItem(1, 4, QtGui.QStandardItem("计算机学院")) student_model.setItem(2, 0, QtGui.QStandardItem("王五")) student_model.setItem(2, 1, QtGui.QStandardItem("20120202")) student_model.setItem(2, 2, QtGui.QStandardItem("男")) student_model.setItem(2, 3, QtGui.QStandardItem("28")) student_model.setItem(2, 4, QtGui.QStandardItem("软件学院")) student_model.setItem(3, 0, QtGui.QStandardItem("赵七")) student_model.setItem(3, 1, QtGui.QStandardItem("20120202")) student_model.setItem(3, 2, QtGui.QStandardItem("男")) student_model.setItem(3, 3, QtGui.QStandardItem("38")) student_model.setItem(3, 4, QtGui.QStandardItem("成人教育学院")) # 设置单元格文本居中,张三的数据设置为居中显示 # student_model.item(0, 0).setTextAlignment(QtCore.Qt.AlignCenter) # student_model.item(0, 1).setTextAlignment(QtCore.Qt.AlignCenter) # student_model.item(0, 2).setTextAlignment(QtCore.Qt.AlignCenter) # student_model.item(0, 3).setTextAlignment(QtCore.Qt.AlignCenter) # student_model.item(0, 4).setTextAlignment(QtCore.Qt.AlignCenter) # 设置单元格文本颜色,张三的数据设置为红色 student_model.item(0, 0).setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0))) student_model.item(0, 1).setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0))) student_model.item(0, 2).setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0))) student_model.item(0, 3).setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0))) student_model.item(0, 4).setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0))) # 将字体加粗 student_model.item(0, 0).setFont(QtGui.QFont("Times", 10, QtGui.QFont.Black)) student_model.item(0, 1).setFont(QtGui.QFont("Times", 10, QtGui.QFont.Black)) student_model.item(0, 2).setFont(QtGui.QFont("Times", 10, QtGui.QFont.Black)) student_model.item(0, 3).setFont(QtGui.QFont("Times", 10, QtGui.QFont.Black)) student_model.item(0, 4).setFont(QtGui.QFont("Times", 10, QtGui.QFont.Black)) #设置排序方式,按年龄降序显示 student_model.sort(3, QtCore.Qt.DescendingOrder) # 利用setModel()方法将数据模型与QTableView绑定 student_tableview.setModel(student_model) student_tableview.show() sys.exit(app.exec_())
演示:
文章的脚注信息由WordPress的wp-posturl插件自动生成