在重型操作期间冻结窗口

时间:2018-02-12 00:06:20

标签: python-3.x pyqt5 progress

我试图从文件夹加载一些文件,我想用进度条显示它的进度。在这一点上,我尝试了多处理,计时器,线程,没有任何工作...我不知道为什么我的代码不工作。 运行此代码之后,它显示了我的基本窗口,但是在我要比较文件的行之后,这是繁重的操作,但我在这里调用prograss bar的刷新,在我的控制台中我看到它正在工作但是带有进度条的窗口被冻结整个时间,永不刷新:(((没有回应)

#here is box with progress bar
self.ex[0]=showLoadingBox(len(files[1]))
#this is the heavy operation that i want to show the progress
duplsCompare=self.comPictures(files, sett.qualityMeasure)
#---------------------------------------------------------------------------
def comPictures(self,ignSource, prepQ):
    dp = []
    ret = []
    source = ignSource[1]

    for index, item in enumerate(source):
        #here im trying to refresh progress bar
        reload(self.ex[0],index+1)
        for p in source[index + 1:]:
            #do some stuff with files...

    #return comparedFiles
# --------------------------------------------------------------------------------------------reloading method
def reload(self,load):
    if(not(self.count==0)):
        val=int((load/self.count)*100)
    else:
        val=100

    self.pBar.setValue(val)
    print(val)

    if(not(load<self.count)):
        self.close()

在比较窗口开始工作结束但对我来说毫无价值之后,我需要prograss bar显示比较的程序。

更新: 所以我使用线程模块,但字面上仍然没有进展。进度条刚刚冻结的窗口,显示没有进展,即使使用不同的线程也没有响应相同的问题...

    retComPic=[]
    t=Thread(target=self.comPictures,args=(files, sett.qualityMeasure,retComPic))
    t.daemon = True
    t.start()

    while(not(len(retComPic))):
        reload(self.ex[0])

    t.join()
    # self.ex[0].close()
    duplsCompare=retComPic[0]

结果在控制台中具有相同的百分比,但冻结了进度窗口

0 个答案:

没有答案