如何在pyqt5中实时更新qprogressbar?

时间:2019-06-20 23:50:08

标签: python pyqt5 qthread qprogressbar

我正在尝试通过pyqt5平台上的百分比增加实时实时更新进度条。

我尝试过Qthread拥有实时进度栏。当Qthread中的函数完成时,它将在Qprogressbar上显示100%。

https://i.ibb.co/bP5NmNd/running.png

上面的链接是一张图片,显示了我现在所拥有的,在处理该函数时未显示任何百分比。

我想在Qprogressbar上进行实时更新,就像实际增加百分比指示线程已处理多远。 (类似于我们解压缩文件时,进度条会因文件大小而变快或变慢,有时它们的行为会如此快,而它们的速度会变快1%到50%,并且会在99%的时间上卡住一段时间,等等。)想要假的时间运行进度栏。

非常感谢

class dialog(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(dialog, self).__init__(parent)

        self.progress = QtWidgets.QProgressBar(self)
        self.progress.setRange(0, 1)
        self.progress.setTextVisible(False)

        self.btn = QtWidgets.QPushButton('Click to Train and Test', self)     
        self.btn.clicked.connect(self.data_process_started)

        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(self.btn)
        layout.addWidget(self.progress)
        self.layout.setLayout(layout)

        self.Task = Task_Thread()
        self.Task.taskFinished.connect(self.onFinished)

    def data_process_started(self):
        self.progress.setRange(0,0)
        self.Task.start()

    def onFinished(self):
        self.progress.setRange(0,1)
        self.progress.setValue(1)


class Task_Thread(QThread):
    taskFinished = pyqtSignal()

    def run(self):
        self.function() # I put my running fuction in here
        self.taskFinished.emit()

0 个答案:

没有答案