PyQt5 QProgressBar – 如何创建进度条

  • Post category:Python

来讲解一下Python的PyQt5 QProgressBar的创建和使用攻略。

一、QProgressBar简介

QProgressBar是PyQt5中的一个进度条组件,用于显示任务的进度。通常在执行耗时的任务时,使用进度条来提示用户任务的进度,使用户了解任务的完成情况和剩余时间。QProgressBar可以显示任务的百分比、当前值、最小值和最大值。

二、QProgressBar的使用方法

2.1 创建QProgressBar

可以使用如下代码创建一个QProgressBar:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QProgressBar

class App(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.progress = QProgressBar(self)
        self.progress.setGeometry(10, 10, 200, 25)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('QProgressBar')
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

2.2 设置QProgressBar的值

可以使用setValue()方法设置QProgressBar的当前值:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QProgressBar

class App(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.progress = QProgressBar(self)
        self.progress.setGeometry(10, 10, 200, 25)

        self.btn = QPushButton('Start', self)
        self.btn.move(10, 50)
        self.btn.clicked.connect(self.doAction)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('QProgressBar')
        self.show()

    def doAction(self):
        self.btn.setEnabled(False)

        for i in range(101):
            self.progress.setValue(i)
            self.progress.setFormat("%d%%" % i)
            QApplication.processEvents()

        self.btn.setEnabled(True)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

三、示例程序及解释

上面的例子演示了如何创建一个带有“Start”按钮的窗口和一个进度条。当用户点击“Start”按钮时,进度条会从0开始计数,显示任务的进度。当进度条达到100时,任务完成。

在这个示例程序中,我们定义了一个按钮,当用户单击按钮时,我们使用for循环模拟一个耗时的任务。在每个迭代中,我们使用setValue()方法设置QProgressBar的当前值,并使用setFormat()方法设置进度条上显示的文本。由于for循环在执行的过程中,界面可能会冻结不响应,为了保证界面的及时响应,我们使用QApplication.processEvents()方法处理事件。