📜  PyQt5 |如何在进度条中间设置百分比指示器?(1)

📅  最后修改于: 2023-12-03 15:18:49.892000             🧑  作者: Mango

PyQt5 | 如何在进度条中间设置百分比指示器?

当我们在使用 PyQt5 创建 GUI 应用程序时,我们有时需要在进度条上显示百分比指示器。这可以帮助用户了解任务的进展情况。本篇文章将教你如何使用 PyQt5 在进度条的中间位置添加百分比指示器。

要实现该功能,我们需要使用 QProgressBar 和 QStylePainter 类。QProgressBar 是一个用于显示任务进度的组件,QStylePainter 类提供了绘制进度条的方法。

下面是一个完整的示例程序,演示了如何在进度条中间设置百分比指示器。

首先,我们需要导入必要的模块:

from PyQt5.QtWidgets import QApplication, QMainWindow, QProgressBar
from PyQt5.QtCore import Qt, QRect
from PyQt5.QtGui import QPainter, QColor, QPen

接下来,我们创建一个自定义的进度条类来继承 QProgressBar 类,并重写其 paintEvent() 方法以实现在进度条中央绘制百分比指示器:

class CustomProgressBar(QProgressBar):
    def __init__(self, parent=None):
        super(CustomProgressBar, self).__init__(parent)

    def paintEvent(self, event):
        painter = QPainter(self)
        rect = QRect(0, 0, self.width(), self.height())

        # 绘制进度条背景
        painter.setBrush(Qt.NoBrush)
        painter.drawRect(rect)

        # 绘制进度条前景
        progress_rect = QRect(0, 0, int(rect.width() * (self.value() / self.maximum())), rect.height())
        painter.setBrush(QColor(0, 120, 215))
        painter.drawRect(progress_rect)

        # 绘制百分比指示器
        if self.value() > 0:
            text = f"{int((self.value() / self.maximum()) * 100)}%"
            font = painter.font()
            font.setPointSize(10)
            painter.setFont(font)
            painter.setPen(QPen(Qt.white))
            painter.drawText(rect, Qt.AlignCenter, text)

在自定义的进度条类中,我们重写了 paintEvent() 方法。首先,我们通过 QPainter 绘制进度条的背景和前景。然后,我们根据当前进度计算百分比,并调整文字的字号、位置和颜色。最后,我们通过调用 drawText() 方法在进度条中央绘制百分比指示器。

最后,我们创建一个主窗口类并在其中实例化自定义的进度条类:

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.progress_bar = CustomProgressBar(self)
        self.progress_bar.setGeometry(50, 50, 200, 30)
        self.progress_bar.setValue(50)

在主窗口类中,我们创建了一个自定义的进度条实例,并设置其位置和大小。我们还可以使用 setValue() 方法来设置进度条的当前值。

最后,我们将主窗口显示出来:

if __name__ == "__main__":
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

以上就是如何在 PyQt5 中实现在进度条中间设置百分比指示器的方法。你可以根据需要调整进度条的样式和绘制方式。希望本文对你学习 PyQt5 有所帮助!

注意:请确保安装了 PyQt5 模块,可以使用 pip install PyQt5 进行安装。