У меня есть процесс, который получает файлы из каталога и помещает их в список. Затем он повторяет этот список в цикле. Последняя строка цикла, где он должен обновить мой графический интерфейс, затем снова начинает цикл со следующего элемента в списке.
Моя проблема в том, что он фактически не обновляет графический интерфейс, пока не завершится весь процесс, который в зависимости от размера списка может составлять от 30 секунд до более минуты. Это создает ощущение зависания программы
Я хотел, чтобы он обработал одну строку в списке, обновил графический интерфейс и затем продолжил. Где я неправ? Строка для обновления списка: # Заполнить просмотр списка содержимым диска. Операторы печати предназначены только для отладки.
def populateList(self):
print "populateList"
sSource = self.txSource.Value
sDest = self.txDest.Value
# re-intialize listview and validated list
self.listView1.DeleteAllItems()
self.validatedMove = None
self.validatedMove = []
#Create list of files
listOfFiles = getList(sSource)
#prompt if no files detected
if listOfFiles == []:
self.lvActions.Append([datetime.datetime.now(),"Parse Source for .MP3 files","No .MP3 files in source directory"])
#Populate list after both Source and Dest are chosen
if len(sDest) > 1 and len(sDest) > 1:
print "-iterate listOfFiles"
for file in listOfFiles:
sFilename = os.path.basename(file)
sTitle = getTitle(file)
sArtist = getArtist(file)
sAlbum = getAblum(file)
# Make path = sDest + Artist + Album
sDestDir = os.path.join (sDest, sArtist)
sDestDir = os.path.join (sDestDir, sAlbum)
#If file exists change destination to *.copyX.mp3
sDestDir = self.defineDestFilename(os.path.join(sDestDir,sFilename))
# Populate listview with drive contents
self.listView1.Append([sFilename,sTitle,sArtist,sAlbum,sDestDir])
#populate list to later use in move command
self.validatedMove.append([file,sDestDir])
print "-item added to SourceDest list"
else:
print "-list not iterated"