【分享】PyQt QTableView示例代码(QStandardItemModel+QTableView)

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 【分享】PyQt QTableView示例代码(QStandardItemModel+QTableView)

首先看下效果:

QQ截图20170320204144

代码:

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_())

演示:

pyqt_qtableview

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 【分享】PyQt QTableView示例代码(QStandardItemModel+QTableView)

文章的脚注信息由WordPress的wp-posturl插件自动生成



|2|left
打赏

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: