Я использую индикатор выполнения, чтобы информировать пользователя о ходе завершения поиска файла. При реализации этого в то время он казался самым логичным выбором, чтобы получить количество файлов для поиска, затем создать диапазон на основе этого числа и прогресс в соответствии с обычными файлами. Казалось, это сработало, но теперь я замечаю, что индикатор выполнения заканчивается до завершения поиска файла. Я - неофит Питона, поэтому приветствуются любые предложения о том, как я могу сделать это более эффективным.Как правильно реализовать индикатор выполнения с помощью wxPython
Ниже мой код:
...
self.progress_bar = wx.Gauge(self.statusbar, -1, style=wx.GA_HORIZONTAL|wx.GA_SMOOTH)
rect = self.statusbar.GetFieldRect(2)
self.progress_bar.SetPosition((rect.x+2, rect.y+2))
self.progress_bar.SetSize((rect.width-3, rect.height-4))
self.progress_bar.Hide()
...
count = 0
count2 = 0
for afile in filelist:
(head, filename) = os.path.split(afile)
if afile.endswith(".log") or afile.endswith(".txt"):
count2 += 1
self.progress_bar.Show()
self.progress_bar.SetRange(numFiles)
wx.CallAfter(self.progress_bar.SetValue, count2)
f=ftp.open(afile, 'r')
for i, line in enumerate(f.readlines()):
result = regex.search(line)
if self.shouldAbort:
return self.shouldAbort
break
Я думаю, что вы все делаете правильно. Допускается ли это до того, как это будет сделано? Это может быть проблема сроков или проблема по отдельности. Вы также должны перечислить пересылку в список рассылки wxPython. –
@Mike Driscoll На самом деле, он достигает 20-30 секунд, прежде чем это будет сделано. – suffa
Возможно, вам нужно разместить некоторые записи или распечатать заявления, чтобы узнать, что происходит. Является ли печать имен файлов соответствующими обновлениям диалогового окна прогресса? Если нет, что-то происходит в вашем коде. –