1
我正在使用進度條來通知用戶完成文件搜索的進度。在實現這一點時,它似乎是當時最合乎邏輯的選擇,可以獲取要搜索的文件數量,然後根據該數字創建一個範圍,並根據已搜索的文件進行處理。它似乎工作,但現在我注意到文件搜索完成之前進度條已經最大化了。我是一名Python初學者,因此歡迎任何關於如何提高效率的建議。如何使用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郵件列表。 – 2012-02-22 14:47:22
@Mike Driscoll實際上,它在完成之前大約需要20-30秒。 – suffa 2012-02-22 17:02:02
也許你需要放入一些日誌或打印語句來看看發生了什麼。文件名稱的打印是否與進度對話框的更新相對應?如果不是,你的代碼中正在發生一些事情。 – 2012-02-22 18:28:43