PyQt5 怎么在tablewighet内的一个单元格内插入进度条,进度条大小跟单元格大小保持一致

在 PyQt5 中,你可以通过在 QTableWidget 的单元格内插入一个 QProgressBar 来实现进度条。要让进度条的大小与单元格大小保持一致,可以将 QProgressBar 嵌入到 QTableWidgetItem 中,并使用布局管理器来自动调整进度条的大小。

以下是实现方法的代码示例:

import sys
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QProgressBar, QWidget, QVBoxLayout, QTableWidgetItem

class ProgressBarWidget(QWidget):
    def __init__(self, parent=None):
        super(ProgressBarWidget, self).__init__(parent)
        # 创建进度条
        self.progressBar = QProgressBar(self)
        self.progressBar.setMinimum(0)
        self.progressBar.setMaximum(100)
        self.progressBar.setValue(50)  # 设置默认的进度值,可根据需要更改

        # 使用 QVBoxLayout 使进度条自适应父窗口大小
        layout = QVBoxLayout()
        layout.addWidget(self.progressBar)
        layout.setContentsMargins(0, 0, 0, 0)  # 去除内边距
        self.setLayout(layout)

if __name__ == "__main__":
    app = QApplication(sys.argv)

    # 创建一个 QTableWidget
    table = QTableWidget(5, 3)

    # 设置表头内容
    table.setHorizontalHeaderLabels(["Column 1", "Column 2", "Column 3"])

    # 在第二行第二列插入一个自定义的进度条小部件
    progress_widget = ProgressBarWidget()
    table.setCellWidget(1, 1, progress_widget)

    # 设置表格的内容
    for i in range(5):
        for j in range(3):
            if not (i == 1 and j == 1):  # 跳过已经设置进度条的单元格
                table.setItem(i, j, QTableWidgetItem(f"Item {i+1},{j+1}"))

    # 显示表格
    table.show()

    sys.exit(app.exec_())
  • ProgressBarWidget:这是一个自定义的 QWidget,其中包含了一个 QProgressBar。通过 QVBoxLayout 布局确保进度条能随着单元格大小的变化自动调整。

  • setCellWidget():使用 setCellWidget() 将自定义的 ProgressBarWidget 插入到指定的单元格中(示例中是第 2 行第 2 列,即 (1, 1) 位置)。

  • 布局自适应:通过将进度条放入 QVBoxLayout,并将边距设置为 0,确保进度条的大小会随着单元格的大小自动适应。

  • 进度值设置:在示例中,默认将进度条的进度值设置为 50。你可以使用 self.progressBar.setValue(进度值) 来动态更新进度条的进度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值