我有一个进度条,当单击一个按钮时,它会启动。当进度条达到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)
但是,在进度结束时,我没有收到弹出消息。我在这里想念什么吗?
您应该使用信号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