0
我試圖運行一個進度對話框,它不是簡單地在一個計時器上,而是基於上傳到服務器的文件的狀態進行更新。我不在乎進度條是如何呈現的,我只是希望它能夠準確反映它正在跟蹤的過程。我嘗試在thread.isAlive()
上使用while
和if
,但在進程運行時,這不會給我一個活動欄。這裏是我使用的酒吧以及被調用的線程的源代碼。從單獨的線程wxPython更新進度對話框
class ProgBar(wx.Frame):
def __init__(self):
wx.Frame.__init__(
self, None, wx.ID_ANY, "Please wait."
)
self.Centre()
max = 250
dlg = wx.ProgressDialog(
"Please wait.",
"Please wait while your request is processed.",
maximum = max,
parent=self,
style = wx.PD_CAN_ABORT
|wx.PD_APP_MODAL
|wx.PD_AUTO_HIDE
)
keepGoing = True
count = 0
while keepGoing and count < max:
count += 1
wx.MilliSleep(50)
if count >= max/2:
(keepGoing, skip) = dlg.Update(count)
else:
(keepGoing, skip) = dlg.Update(count)
dlg.Destroy()
和線程...
def UploadToServer(self, event):
if PepTalkSource is None:
dlg = wx.MessageDialog(self,
"You must attach a Pep Talk file!",
"Missing Attachments!", wx.OK|wx.ICON_QUESTION)
result = dlg.ShowModal()
dlg.Destroy()
else:
if os.path.isdir(
r"\\server\address\goes\here"
):
ThreadOne = FuncThread(CopyMove,())
ThreadOne.start()
dlg = ProgBar()
ThreadOne.join()
else:
dlg = wx.MessageDialog(self,
"The server could not be reached. Please visit the Help Menu.",
"Server Unavailable", wx.OK|wx.CANCEL|wx.ICON_QUESTION)
result = dlg.ShowModal()
dlg.Destroy()
我甚至試過溝類,並插入對話直入,沒有運氣的功能。任何幫助將不勝感激。
所以我假設我可以使用os.path.getsize()來處理文件的大小。問題雖然,我必須使用像範圍一樣的列表來循環遍歷文件,因爲它們上傳並以這種方式回覆到標準格式? – Benjooster
好吧,那麼新問題。我一直在閱讀日誌記錄手冊,現在我實際上已經錯過了,我想到了我的腳本中實際執行的內容。我不會像複製那樣「上傳」。所有信息都將轉到映射到用戶驅動器上的sharepoint共享文檔文件夾中。對不起,在這個混亂。 – Benjooster
我會使用os.stat來獲取每個文件的文件大小,然後總計它們並將其用於您的量表範圍。 –