我想使用wx.ProgressDialog来显示我的程序的进度。我有一个按钮,当按下时运行此功能:如何在执行任务时更新进度栏
def runmiP(self, event):
predictor.runPrediction(self.uploadProtInterestField.GetValue(), self.uploadAllProteinsField.GetValue(), self.uploadPfamTextField.GetValue(), \
self.edit_eval_all.Value, self.edit_eval_small.Value, self.saveOutputField)
predictor是我写的python包。我如何从预测器中取得进展并将其显示在进度栏中?我只能返回一个值。我是否应该多次拨打电话(如每分钟),记住它离开的地方,返回多远并再次拨打电话?类似于
while 1:
time.sleep(60)
predictor.runPrediction(self.uploadProtInterestField.GetValue(), self.uploadAllProteinsField.GetValue(), self.uploadPfamTextField.GetValue(), \
self.edit_eval_all.Value, self.edit_eval_small.Value, self.saveOutputField)
还是有更好的方法来做到这一点?
回调并不总是有效,因为它不会运行允许进度UI重新绘制自己的消息循环。 –
@MarkRansom:我已经在第一段中提到:“除非你已经在另一个线程上运行它,否则你会阻止你的整个UI,而不是无法更新进度条。 – abarnert
对不起,这听起来像你说回调是解决这个问题。 –