Создайте автоматическое c всплывающее окно сообщения, когда индикатор выполнения завершен - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть индикатор выполнения, который запускается при нажатии кнопки. Я хотел бы получить всплывающее сообщение, когда индикатор выполнения достигает 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)

Однако в конце процесса я не получаю всплывающее сообщение. Есть ли что-то, что я здесь скучаю?

1 Ответ

0 голосов
/ 03 мая 2020

Вы должны использовать сигнал 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...