pythonGUI库图形界⾯开发之PyQt5控件QTableWidget详细使⽤⽅
法与属性
QTableWidget介绍
QTableWidget是Qt程序中常⽤的显⽰数据表格的控件,类似于c#中的DataGrid。QTableWidget是QTableView的⼦类,它使⽤标准的数据模型,并且其单元数据是通过QTableWidgetItem对象来实现的,使⽤QTableWidget时就需要QTableWidgetItem。⽤来表⽰表格中的⼀个单元格,整个表格就是⽤各个单元格构建起来的
QTableWidget类中的常⽤⽅法
⽅法描述
setROwCount(int row)设置QTableWidget表格控件的⾏数
setColumnCount(int col)设置QTableWidget表格控件的列数
setHorizontalHeaderLabels()设置QTableWidget表格控件的⽔平标签
setVerticalHeaderLabels()设置QTableWidget表格控件的垂直标签
setItem(int ,int ,QTableWidgetItem)在QTableWidget表格控件的每个选项的单元控件内添加控件
horizontalHeader()获得QTableWidget表格控件的表格头,以便执⾏隐藏
rowCount()获得QTableWidget表格控件的⾏数
columnCount()获得QTableWidget表格控件的列数
setEditTriggers(EditTriggers triggers)设置表格是否可以编辑,设置表格的枚举值
setSelectionBehavior设置表格的选择⾏为
setTextAlignment()设置单元格内⽂本的对齐⽅式
setSpan(int row,int column,int rowSpanCount,int columnSpanCount)合并单元格,要改变单元格的第row⾏,column列,要合并rowSpancount⾏数和columnSpanCount列数
row:要改变的⾏数
column:要改变的列数
rowSpanCount:需要合并的⾏数
columnSpanCount:需要合并的列数
setShowGrid()在默认情况下表格的显⽰是有⽹格的,可以设置True或False⽤于是否显⽰,默认
True
setColumnWidth(int column,int width)设置单元格⾏的宽度
setRowHeight(int row,int height)设置单元格列的⾼度
编辑规则的枚举值类型
⽅法描述
setROwCount(int row)设置QTableWidget表格控件的⾏数
setColumnCount(int col)设置QTableWidget表格控件的列数
setHorizontalHeaderLabels()设置QTableWidget表格控件的⽔平标签
setVerticalHeaderLabels()设置QTableWidget表格控件的垂直标签
setItem(int ,int ,QTableWidgetItem)在QTableWidget表格控件的每个选项的单元控件内添加控件horizontalHeader()获得QTableWidget表格控件的表格头,以便执⾏隐藏
rowCount()获得QTableWidget表格控件的⾏数
columnCount()获得QTableWidget表格控件的列数
setEditTriggers(EditTriggers triggers)设置表格是否可以编辑,设置表格的枚举值
setSelectionBehavior设置表格的选择⾏为
控件的使用setTextAlignment()设置单元格内⽂本的对齐⽅式
setSpan(int row,int column,int rowSpanCount,int columnSpanCount)合并单元格,要改变单元格的第row⾏,column列,要合并rowSpancount⾏数和columnSpanCount列数
row:要改变的⾏数
column:要改变的列数
rowSpanCount:需要合并的⾏数
columnSpanCount:需要合并的列数
setShowGrid()在默认情况下表格的显⽰是有⽹格的,可以设置True或False⽤于是否显⽰,默认
True
setColumnWidth(int column,int width)设置单元格⾏的宽度
setRowHeight(int row,int height)设置单元格列的⾼度
表格选择⾏为的枚举值
选择值描述QAbstractItemView.SelectItems0Selecting0选中单个单元格QAbstractItemView.SelectRows1Selecting1选中⼀⾏QAbstractItemView.SelectColumns2Selecting2选中⼀列
单元格⽂本⽔平对齐⽅式
选项描述
Qt.AlignLeft将单元格内的内容沿单元格的左边缘对齐
Qt.AlignRight将单元格内的内容沿单元格的右边缘对齐
Qt.AlignHCenter在可⽤空间中,居中显⽰在⽔平⽅向上
Qt.AlignJustify将⽂本在可⽤空间内对齐,默认从左到右
单元格⽂本垂直对齐⽅式
选项描述
Qt.AlignTop与顶部对齐
Qt.AlignBottom与底部对齐
Qt.AlignVCenter在可⽤空间中,居中显⽰在垂直⽅向上
Qt.AlignBaseline与基线对齐
如果要设置⽔平和垂直⽅向对齐⽅式,⽐如在表格空间内上下,左右居中对齐,那么只要使⽤Qt,AlignHCenter和Qt,AlignVCenter即可QTableWidget的基本⽤法实例
import sys
from PyQt5.QtWidgets import *
class Table(QWidget):
def __init__(self):
super(Table, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("QTableWidget例⼦")
layout=QHBoxLayout()
#实现的效果是⼀样的,四⾏三列,所以要灵活运⽤函数,这⾥只是⽰范⼀下如何单独设置⾏列
TableWidget=QTableWidget(4,3)
# TableWidget = QTableWidget()
# TableWidget.setRowCount(4)
# TableWidget.setColumnCount(3)
#设置⽔平⽅向的表头标签与垂直⽅向上的表头标签,注意必须在初始化⾏列之后进⾏,否则,没有效果
TableWidget.setHorizontalHeaderLabels(['姓名','性别','体重(kg)'])
#Todo 优化1 设置垂直⽅向的表头标签
#TableWidget.setVerticalHeaderLabels(['⾏1', '⾏2', '⾏3', '⾏4'])
#TODO 优化 2 设置⽔平⽅向表格为⾃适应的伸缩模式
##TableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
#TODO 优化3 将表格变为禁⽌编辑
#TableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
#TODO 优化 4 设置表格整⾏选中
#TableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)
#TODO 优化 5 将⾏与列的⾼度设置为所显⽰的内容的宽度⾼度匹配
#sizeColumnsToContents(TableWidget)
#sizeRowsToContents(TableWidget)
#TODO 优化 6 表格头的显⽰与隐藏
#TableWidget.verticalHeader().setVisible(False)
#TableWidget.horizontalHeader().setVisible(False)
#TOdo 优化7 在单元格内放置控件
# comBox=QComboBox()
# comBox.addItems(['男','⼥'])
# comBox.addItem('未知')
# comBox.setStyleSheet('QComboBox{margin:3px}')
# TableWidget.setCellWidget(0,1,comBox)
#
# searchBtn=QPushButton('修改')
# searchBtn.setDown(True)
# searchBtn.setStyleSheet('QPushButton{margin:3px}')
# TableWidget.setCellWidget(0,2,searchBtn)
#添加数据
newItem=QTableWidgetItem('张三')
TableWidget.setItem(0,0,newItem)
newItem=QTableWidgetItem('男')
TableWidget.setItem(0,1,newItem)
newItem=QTableWidgetItem('160')
TableWidget.setItem(0,2,newItem)
layout.addWidget(TableWidget)
self.setLayout(layout)
if __name__ == '__main__':
app=QApplication(sys.argv)
win=Table()
win.show()
<_())
初始运⾏程序,显⽰效果如下
代码分析
构造⼀个QTableWidget对象,设置表格为4⾏3列
TableWidget=QTableWidget(4,3)
设置表格头
TableWidget.setHorizontalHeaderLabels(['姓名','性别','体重(kg)'])⽣成⼀个QTableWidgetItem对象,并添加到表格的0⾏0列处
newItem=QTableWidgetItem('张三')
TableWidget.setItem(0,0,newItem)
优化1:设置垂直⽅向表格头标签
TableWidget.setVerticalHeaderLabels(['⾏1', '⾏2', '⾏3', '⾏4'])
效果如下
优化2:设置表格头为伸缩模式
使⽤QTableWidget对象的horizontalHeader()函数,设置表格为⾃适应的伸缩模式,即可根据窗⼝的⼤⼩来改变⽹格的⼤⼩
TableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
优化3:将表格设置为禁⽌编辑
在默认情况下,表格中的字符是可以更改的,⽐如双击⼀个单元格,就可以修改原来的内容,如果想禁⽌这种操作,让表格对⽤户只是只读,则可以编辑⼀下代码
TableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
优化4:表格整⾏选中
表格默认选择的是单个单元格,通过以下代码可以设置整⾏选中
TableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)
优化5:将⾏与列的宽度⾼度与⽂本内容的宽⾼相匹配
优化6:表格头的显⽰与隐藏
TableWidget.verticalHeader().setVisible(False)
TableWidget.horizontalHeader().setVisible(False)
优化7:在单元格内放置控件
QTableWidget不仅允许往单元格内放置⽂字,还允许放置控件,通过QTableWidget.setItem()来添加PyQt的基本控件这⾥把⼀个下拉列表框和⼀个按钮加⼊单元格中,设置控件与单元格的边距,如为3px像素,代码如下
comBox=QComboBox()
comBox.addItems(['男','⼥'])
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论