本篇介绍PyQt5的表格控件QTableWidget。QTableWidget类似于Excel的表,适用于显示结构化的数据。它的单元格是QTableWidgetItem实例,可以精准的控制每个单元格的文本和外观。
表格控件QTableWidget主要由三大部分组成:
水平表头,可用来设置每列的名称和列宽。可隐藏。
竖直表头,可用来设置每行的名称和行高。可隐藏。
各单元格,可设置文本,图标,或者设置为控件。
单元格的行数和列数可以在表格初始化时指定:table = QTableWidget(2,3) #2行,3 列
也可以用setRowCount() 和 setColumnCount()指定:table = QTableWidget()table.setRowCount(2)table.setColumnCount(3)
可隐藏表头table.horizontalHeader().hide()table.verticalHeader().hide()
设置水平表头的标签table.setHorizontalHeaderLabels(["列1","列2","列2"])#表头标签默认从"1"开始,"1","2"...
设置竖直表头的标签table.setVerticalHeaderLabels(["行1","行2"])#表头标签默认"1","2"...
注意,QTableWidget中行和列的索引都是从0开始。
其实,各表头项也是QTableWidgetItem实例,可通过更改属性精确设定字体,颜色,图标等外观行为。
设置列宽:table.setColumnWidth (0,50) #第0列,宽50
设置行高:table.setRowHeight (1,30) #第1行,高30
可禁止用户更改行高或列宽table.verticalHeader().setDisabled(True) #不让用户改行高table.horizontalHeader().setDisabled(True) #不让用户改列宽
也可设置为随窗口大小自动调整列宽:table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
随窗口大小自动调整行高:table.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)
设置表格的编辑规则table.setEditTriggers(QAbstractItemView.AllEditTriggers)
有以下规则可选:
第0项是禁止用户编辑表格,表格只用来显示可读的数据。
设置表格的选择模式:table.setSelectionBehavior(QAbstractItemView.SelectItems)#默认
设定可自动排序(点击水平表头时,各行按该列数据自动排序):table.setSortingEnabled (True) #默认为False
设定单元格(QTableWidgetItem实例)的文本item = QTableWidgetItem()item.setText("数据xx")
也可以在初始化时给定item = QTableWidgetItem("数据xx")
其它的一些可选的单元格属性:
设定单元格的图标:item.setIcon(QIcon(":ICON/ICON/next.png"))#设置Item的图标
设定单元格的背景色:item.setBackground(QColor(rgb[0],rgb[1],rgb[2])) # 或用常见的颜色QColor("red")
设定单元格的字体:item.setFont()
设定单元格的文本的对齐:item.setTextAlignment(Qt.AlignHCenter |Qt.AlignVCenter)
设定单元格的前景色(字体颜色):item.setForeground(QColor("red"))
指定单元格的item:table.setItem(1, 2, item1)#第1行,第2列,为item1
甚至可以指定单元格以控件显示:table.setCellWidget (0,2, QSpinBox())table.setCellWidget (1,2, QCheckBox("知否知否"))
表格的各种信号(以C++描述,PyQt中为同名信号):
留言与评论(共有 0 条评论) |