Pyqt5 表格视图控件方法总结


声明:本文是在参考文上的继承,和自己使用过程中相关的补充
参考资料:(这些参考文都非常棒)

https://blog.csdn.net/panrenlong/article/details/79959069【表格创建】
https://www.zhaokeli.com/article/7986.html【QTableView表格视图控件的使用方法】
https://github.com/muziing/PyQt_practice 【实例大全】!
https://www.cnblogs.com/yanjy-onlyone/p/12297984.html【PyQt5单元格操作大全】
https://blog.csdn.net/yekui006/article/details/98211808【PYQT5表格及样式设置方法】

Table View and Table Widget

Table View and Table Widget在创建表格时很多方法和都是相同的,只是创建或者一些机制有些不一样,具体我也不深纠了

将表格变为禁止编辑:

在默认情况下,表格里的字符是可以更改的,比如双击一个单元格,就可以修改原来的内容,如果想禁止用户的这种操作,让这个表格对用户只读,可以这样:

self.MyTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.MyTable.setEditTriggers(QtWidgets.QTableView.NoEditTriggers)
# 👆都可以将表格变成禁止编辑
# .NoEditTriggers 不能对表格内容进行修改
# .CurrentChanged 任何时候都能对单元格修改
# .DoubleClicked 双击单元格
# .SelectedClicked 单击已选中的内容
# .EditKeyPressed Editing starts when the platform edit key has been pressed over an item
# .AnyKeyPressed 按下任意键就能修改
# .AllEditTriggers 以上条件全包括
# https://blog.csdn.net/LaoYuanPython/article/details/102367884 【常量含义说明】

设置表格为整行选择:

self.MyTable.setSelectionBehavior(QAbstractItemView.SelectRows)
# .SelectItems 选中单个单元格
# .SelectRows 选中一行
# .SelectColumns 选中一列

单个选中和多个选中的设置:

self.MyTable.setSelectionMode(QAbstractItemView.ExtendedSelection)  #设置为可以选中多个目标
#.NoSelection      不能选择
#.SingleSelection  选中单个目标
#.MultiSelection    选中多个目标,正常情况下是单选,但按下Ctrl或Shift键后,可以多选

合并单元格效果的实现

setSpan(row,column,要合并的行数,要合并的列数)
# 参数解析:
# 将第row行,第column列 合并为?行,?列

在单元格里加入控件或者图片

QTableWidget不仅允许把文字加到单元格,还允许把控件也放到单元格中,比如,下拉框什么的都可以加入单元格

self.MyCombo = QComboBox()  
self.MyCombo.addItem("√")  
self.MyCombo.addItem("×")           
self.MyTable.setCellWidget(1,0,self.MyCombo)  

设置表格外部无边框and不显示格子线:

myTable.setFrameShape(QFrame.Box) # 设置表格外部无边框
myTable.setShowGrid(False)        # 设置不显示格子线

设置某一列(行)的行高或列宽:

myTable.horizontalHeader().resizeSection(0,300) #设置第一列的宽度
myTable.verticalHeader().resizeSection(0,500) #设置第一行的高度

设置表头相关操作

#对表头文字的字体,颜色,背景颜色,对齐方式进行设置
for x in range(self.MyTable.columnCount()):  
    headItem = self.MyTable.horizontalHeaderItem(x)   # 获得水平方向表头的Item对象  
    headItem.setFont(QtGui.QFont('微软雅黑',11,QtGui.QFont.Black)) # 设置字体样式和大小  
    headItem.setForeground(QBrush(QColor(255,255,0))) # 设置字体颜色
    headItem.setBackground(QBrush(QColor(0,0,255)))   # 设置字体的背景颜色
    headItem.setTextAlignment(QtCore.Qt.AlignLeft)    # 左对齐
    # 还可以这么写
    headItem.setTextAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignBottom)    #设置右对齐方式和底下对齐
# 对齐方式
Qt::AlignLeft::水平方向靠左。
Qt::AlignRight:水平方向靠右。
Qt::AlignHCenter:水平方向居中。
Qt::AlignJustify:水平方向调整间距两端对齐。
Qt::AlignTop:垂直方向靠上。
Qt::AlignButton:垂直方向靠下。
Qt::AlignVCenter:垂直方向居中。
Qt::AlignCenter:等价于 Qt::AlignHCenter | Qt::AlignVCenter

self.MyTable.verticalHeader().setVisible(False) # 水平表头隐藏 True-->显示
self.MyTable.horizontalHeader().setVisible(False) # 垂直表头隐藏

myTable.horizontalHeader().setFixedHeight(100)   # 且只能用该类方法设置横向表头的高度
myTable.verticalHeader().setFixedWidth(300)      # 且只能用该类方法设置纵向表头的宽度

#设置表头不可点击
myTable.verticalHeader().setClickable(False)

# # 设置横向表头加粗
# font = tab.horizontalHeader().font()
# font.setBold(True)
# tab.horizontalHeader().setFont(font)

# #竖向加粗
# font1=tab.verticalHeader().font()
# font1.setBold(True)
# tab.verticalHeader().setFont(font1)

#设置表头内某个元素的字体加粗横向:
# font = QFont()
# font.setBold(True)
# item = tab.horizontalHeaderItem(0)
# item.setFont(font)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM