Загрузка в фоновом режиме, показывающая прогресс через датчик в строке состояния.
Для этого вы можете начать загрузку, используя QThread. Ваш класс потока может выглядеть следующим образом (при условии, что parent
будет иметь атрибут progress
):
QtFileLoader(QtCore.QThread):
def __init__(self,parent=None, filepath=None):
QtCore.QThread.__init__(self,parent)
self.data = None
self.filepath = filepath
def run(self):
""" load data in parts and update the progess par """
chunksize = 1000
filesize = ... # TODO: get length of file
n_parts = int(filesize/chunksize) + 1
with open(self.filepath, 'rb') as f:
for i in range(n_parts):
self.data += f.read(chunksize)
self.parent.progress = i
Здесь обсуждается вопрос: использовать QThread
или trheading.Thread
edit (согласно намёку @Nathan):
На parent
функция таймера должна проверять, скажем каждые 100 мс, значение self.parent.progress и соответственно устанавливать индикатор выполнения. Таким образом, индикатор выполнения устанавливается из основного потока графического интерфейса.