PyQt5 表格控件(QTableWidget)

本篇介绍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 条评论)
   
验证码:

相关文章

推荐文章

'); })();