PyQt学习笔记:QTableWidget相关

预期功能

Qt Designer中设计表格元素,0行5列,行在程序运行过程中动态添加

 

表格设置

在程序中直接设定每一列的宽度:

# 参数一:列号。参数二:列宽。
self.test_table.setColumnWidth(0, 275)
self.test_table.setColumnWidth(1, 90)
self.test_table.setColumnWidth(2, 80)
self.test_table.setColumnWidth(3, 50)
self.test_table.setColumnWidth(4, 50)

当然也可以设定每一列自动拉伸:

self.test_table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

或者根据内容动态调整列宽

# 根据第一列列宽为自适应为该列内容长度
self.test_table.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeToContents)

 

代码细节

# 获取此时表格中的行数 插入一行
row_count = self.test_table.rowCount()
self.test_table.insertRow(row_count)


# 设置指定单元格的文本:新建item 设置为只读 设置悬停信息 设置item
newItem = QTableWidgetItem(text1)
newItem.setFlags(Qt.ItemIsEnabled)
newItem.setToolTip(text2)
self.test_table.setItem(row, col, newItem)

# 在指定单元格中添加控件
test_widget1 = QComboBox()    # 添加QComboBox
test_widget1.addItems(["one", "two"])    # 设定下拉元素
test_widget1.setCurrentIndex(-1)    # 设置默认值
self.test_table.setCellWidget(row, col, test_widget1)    # 设置cellWidget

test_widget2 = QSpinBox()    # 添加QSpinBox
test_widget2.setRange(0, 100)    # 设置控件范围
test_widget2.setValue(50)    # 设置默认值
self.test_table.setCellWidget(row, col, test_widget2)    # 设置cellWidget


# 读取指定单元格文本
item_text = self.test_table.item(row, col).text()

# 读取指定单元格控件信息
cellWidget_value1 = self.test_table.cellWidget(row, col).value()


# 删除选中行
currentRow = self.test_table.currentRow()    # 获取当前所选单元格的行号
# # 行号为-1表示当前没有选中,那就删除最后一行
if currentRow == -1:
    self.test_table.removeRow(self.test_table.rowCount()-1)
else:
    self.test_table.removeRow(currentRow)

# 删除所有行
# # 反向迭代执行删除操作(删除行)
for i in reversed(list(range((self.test_table.rowCount())))):
    self.test_table.removeRow(i)

额外说明:

之所以需要反向迭代是因为正向迭代会先删除第一行,原先的第二行会变成新的第一行,这样新的第一行是无法被删除的,所以需要从表格的最底端开始删除。

这样删除的方法是直接删除单元格中的内容和单元格本身。

如果只是想清空单元格可以使用下方方法:

self.test_table.clear()    # 清空所有内容,包括标题头
self.test_table.clearContents()    # 清空所有内容,不包括标题头

 

附上自己用的QTableWidget的QSS:

QHeaderView::section{
    background-color:rgb(60, 63, 65);
    border:0px solid #E0DDDC;
    border-bottom:1px solid #E0DDDC;
    height:20px;
}

最后附上Qt Designer中QTableWidget的相关参数说明:

PyQT5控件:数据表格(QTableWidget) - 知乎 (zhihu.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值