1、介绍
这是pyqt的表格组件。
2、类和初始化
class QTableWidget(QTableView):
def __init__(self, *__args):
pass
示例:
self.table = QTableWidget(self.w)
3、属性
4、方法
(1)columnCount和rowCount
- 返回int类型,即列数和行数,最低为0,即空白,此时没有表头
(2)setColumnCount和setRowCount
- 设置int参数,即列数和行数。如果行置为0,即清除表格
- 此时获取列数和行数,即为设置的值
- 标题行和序号列不计入获取的行数和列数
(3)insertRow和insertColumn
- 设置int参数,表示在指定位置插入行或者列
- 最低为0,表示首行或者首列,设置时在最前进行插入。最大为rowCount()或columnCount(),设置时在最后进行插入。
- 参数超出范围,则不进行插入行或列,也不报错
(4)removeRow和removeColumn
- 设置int参数,表示移除指定的行或列
- 最低为0,表示首行或者首列,设置时移除首行或首列。最大为rowCount()-1或columnCount()-1,设置时移除末行或末列。
- 参数超出范围,则不移除行或列,也不报错
(5)setItem
- 用于设置单元格的值,需要设置行索引和列索引,都是从0开始。也就是说需要在前面直接设置或者插入行和列,使得指定的单元格是先于存在的
- 可以直接设置或间接设置
item = QTableWidgetItem()
item.setText('单元格')
self.table.setItem(0,0,item)
self.table.setItem(0,1, QTableWidgetItem('单元格'))
(6)item
- 指定行索引和列索引,都是从0开始,返回指定的单元格对象,即QTableWidgetItem。
- 对单元格可以进行操作
- setText:即设置单元格文本。如果已经通过QTableWidgetItem为单元格赋过值,可以采用该方法进行快速设置。否则会报错
- setFlags:Qt.ItemIsEnabled。设置该单元格只读模式
- setTextAlignment 设置对其方式
- text 获取单元格内容
item(0,0)
item(0,0).setText('更新')
item(0,0).setFlags(Qt.ItemIsEnabled) # 参数名字段不允许修改
from PySide2.QtCore import Qt
item(0,0).setTextAlignment(Qt.AlignHCenter) #居中对其
item(0,0).text() # 获取单元格内容
(7)currentRow和currentColumn
- 获取当前选中的行数和列数。
- 当不存在行和列时,即行数和列数为0,则这两方法返回-1
- 当存在行和列时,即使未选择,也返回0
- 当选中之后,点击表格外的区域并不会改变当前选中行和列。
- 选中标题行或者序号列的单元格,其列或者行有效,从0开始,而另外的行或者列为0
currentRow()
currentColumn()
(8)clearContents
- 清除表格内容,但是不会删除单元格
(9)row和column
- 如果没有查到,返回-1和-1
- 这里的QTableWidgetItem并不是自定义创建的,而是基于事件等情况从表格对象直接获取的。前者查询不到任何东西,返回-1
def row(self, QTableWidgetItem):
""" row(self, QTableWidgetItem) -> int """
return 0
def column(self, QTableWidgetItem):
""" column(self, QTableWidgetItem) -> int """
return 0
(10)其他
# 设定第1列的宽度为 180像素
table.setColumnWidth(0, 180)
# 设定第2列的宽度为 100像素
table.setColumnWidth(1, 100)
# 表格控件宽度 随着父窗口的缩放自动缩放
table.horizontalHeader().setStretchLastSection(True)
- 设置宽度
self.table.verticalHeader().setVisible(False)#隐藏垂直表头
self.table.verticalHeader().setVisible(False)#隐藏水平表头
self.table.setHorizontalHeaderLabels(['第一行列','第二列','第三列','第四列'])
self.table.setVerticalHeaderLabels(['第一行','第二行','第三行','第四行','第五行'])
设置背景色和字体色
# 设置背景色
self.ui.tableWidget.item(0, 2).setBackground(QBrush(QColor(0, 0, 255)))
# 设置前景色,即字体颜色
self.ui.tableWidget.item(0, 1).setForeground(QBrush(QColor(0, 0, 255)))
5、事件
self.table.cellChanged.connect()
- 当用户修改了一个单元格的内容,会发出 cellChanged 信号,并且携带参数指明该单元格的行号和列号。
cellClicked(self, p_int, p_int_1)
cellDoubleClicked(self, p_int, p_int_1)
itemClicked(self, QTableWidgetItem)
itemDoubleClicked(self, QTableWidgetItem)
cellChanged(self, p_int, p_int_1):
columnCountChanged
currentCellChanged(self, p_int, p_int_1, p_int_2, p_int_3)
currentChanged(self, *args, **kwargs)
currentItemChanged(self, QTableWidgetItem, QTableWidgetItem_1)
dataChanged(self, *args, **kwargs)
horizontalScrollbarValueChanged(self, *args, **kwargs)
itemChanged(self, QTableWidgetItem)
itemSelectionChanged(self)
rowCountChanged(self, *args, **kwargs)
selectionChanged(self, *args, **kwargs)
verticalScrollbarValueChanged(self, *args, **kwargs)
标签:单元格,int,self,QTableWidget,pyqt5,item,QTableWidgetItem,设置
From: https://www.cnblogs.com/wd404/p/17324478.html