我目前对以下代码有问题(使用PyQt5的python 3.4.3):
while not joblist ==[]:
currentitem = joblist.pop()
self.lstthreads.item(threadnum-1).setText("thread" + str(threadnum) + " - " + str(len(joblist)) + " items left to process.")
这个片段在一个线程中,我首先将一个巨大的文本文件加载到一个列表中,然后将它分成5部分。每个部分都在上面的线程中运行。如您所见,每个循环都会使用pop()删除一个项目,并且列表框(pyqt)会在pop()之后用列表中剩余的项目总数进行更新,以跟踪进度。你知道吗
但是,列表框显示: Thread1-剩余0个要处理的项。 Thread2-还有0个项目要处理。 Thread3-剩余0个项目要处理。 Thread4-剩下0个项目要处理。 Thread5-剩余0个项目要处理。你知道吗
但奇怪的是,如果我添加这样的打印语句:
while not joblist ==[]:
print ("trash")
currentitem = joblist.pop()
self.lstthreads.item(threadnum-1).setText("thread" + str(threadnum) + " - " + str(len(joblist)) + " items left to process.")
我得到了我所期望的: Thread1-还有1396个项目要处理。 Thread2-还有1396个项目要处理。 Thread3-还有1396个项目要处理。 Thread4-1396项剩余处理。 Thread5-1396项剩余处理。你知道吗
列表框项也会按预期更新,为什么会这样?你知道吗
你的主线程没有运行,因为其他线程,不知道原因没有完整的代码,但调用QCoreApplication.processEvents()应该解决这个问题。你知道吗
相关问题 更多 >
编程相关推荐