进度栏完成后创建一个自动弹出消息框

问题描述 投票:-1回答:1

我有一个进度条,当单击一个按钮时,它会启动。当进度条达到100%时,我想弹出消息。这是我所做的摘要:

    def __init__(self, parent):
        super(TrialWizardPage, self).__init__(parent)

        self.progressBar = QProgressBar(self)
        self.progressBar.setGeometry(10, 250, 610, 20)

        self.btnStart = QPushButton('Begin proccessing', self)
        self.btnStart.move(30, 80)
        self.btnStart.clicked.connect(self.startProgress) 

        self.timer = QBasicTimer()
        self.step = 0

    def startProgress(self):
        if self.timer.isActive():
            self.timer.stop()
            self.btnStart.setText('Begin processing')
        else:
            self.timer.start(100, self)
            self.btnStart.setText('Pause')

    def timerEvent(self, event):
        if self.step >= 100:
            self.timer.stop()
            self.step = 0
            self.btnStart.setText('Restart processing')
            self.label_info.setText("Processing complete")
            self.progressBar(self.clickMethod)
            return

        self.step +=1
        self.progressBar.setValue(self.step)

    def clickMethod(self):
        msg = QMessageBox()
        msg.setIcon(QMessageBox.Information)
        msg.setText("Processing complete!")
        msg.setStandardButtons(QMessageBox.Ok)

但是,在进度结束时,我没有收到弹出消息。我在这里想念什么吗?

python pyqt pyqt5
1个回答
0
投票

您应该使用信号QProgressBar.valueChanged并将其连接到将当前值与进度条设置的最大值进行比较的函数上

def F_valueChanged(val):
    if val==ui.progressBar.maximum():   #it would be better >= instead of ==
        QtWidgets.QMessageBox.information(None,'Info', "Processing complete!",QtWidgets.QMessageBox.Ok) #Replace none with the QWidget you want to center the message box

ui.progressBar.valueChanged.connect(F_valueChanged) #connect signal to function 
© www.soinside.com 2019 - 2024. All rights reserved.