【发布时间】:2011-06-23 19:19:10
【问题描述】:
我有一个从目录中获取文件并将它们放在列表中的进程。然后它在循环中迭代该列表。循环的最后一行是它应该更新我的 gui 显示的地方,然后它会从列表中的下一项再次开始循环。
我的问题是,直到整个过程完成,它才会真正更新 gui,这取决于列表的大小可能是 30 秒到一分钟多。这给人一种程序“挂起”的感觉
我想要它做的是处理列表中的一行,更新 gui 然后继续。我哪里做错了?更新列表的行是 # Populate listview with drive contents。打印语句仅用于调试。
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"
【问题讨论】:
标签: python user-interface listview wxpython