首先看下效果:
代码:
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插件自动生成


 
                 微信扫一扫,打赏作者吧~
微信扫一扫,打赏作者吧~ 
	![[整理]how to run flask with pyqt5](http://www.jyguagua.com/wp-content/themes/begin/timthumb.php?src=http://www.jyguagua.com/wp-content/uploads/2021/03/pyqt_flask.png&w=280&h=210&zc=1)
![[已解决]LINK : fatal error LNK1158: cannot run 'rc.exe' 错误的解决办法](http://www.jyguagua.com/wp-content/themes/begin/timthumb.php?src=http://www.jyguagua.com/wp-content/uploads/2021/02/Snipaste_2021-02-17_15-18-26-1024x505.png&w=280&h=210&zc=1)
![[已解决]Python扩展模块 error: Unable to find vcvarsall.bat](http://www.jyguagua.com/wp-content/themes/begin/timthumb.php?src=http://www.jyguagua.com/wp-content/uploads/2020/11/Snipaste_2020-11-19_10-01-38.png&w=280&h=210&zc=1)
![[整理]PyQt画圆,动态变色](http://www.jyguagua.com/wp-content/themes/begin/timthumb.php?src=http://www.jyguagua.com/wp-content/uploads/2020/08/drawCircle.gif&w=280&h=210&zc=1)
