【发布时间】:2012-02-21 17:23:30
【问题描述】:
我正在使用进度条通知用户完成文件搜索的进度。在实现这一点时,这似乎是当时最合乎逻辑的选择,获取要搜索的文件数量,然后根据该数量创建一个范围,并根据已搜索的文件进行进度。它似乎有效,但现在我注意到在文件搜索完成之前进度条已达到最大值。我是 Python 新手,因此欢迎任何关于如何提高效率的建议。
下面是我的代码:
...
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 秒。
-
也许您需要放入一些日志记录或打印语句以查看发生了什么。文件名的打印是否与进度对话框的更新相对应?如果没有,您的代码中发生了一些事情。
标签: wxpython progress-bar