PyQt: подключение сигнала к слоту для запуска фоновой операции

У меня есть следующий код, который выполняет фоновую операцию (scan_value) при обновлении индикатора выполнения в пользовательском интерфейсе (progress).scan_value перебирает некоторое значение вobj, испускающий сигнал (value_changed) каждый раз, когда значение изменяется. По причинам, которые здесь не актуальны, я должен обернуть это в объект (Scanner) в другой теме. Сканер вызывается, когда кнопкаscan являетсяclicked, И тут возникает мой вопрос ... следующий код работает нормально (т.е. индикатор выполнения обновляется вовремя).

# I am copying only the relevant code here.

def update_progress_bar(new, old):
    fraction = (new - start) / (stop - start)
    progress.setValue(fraction * 100)

obj.value_changed.connect(update_progress_bar)

class Scanner(QObject):

    def scan(self):
        scan_value(start, stop, step)
        progress.setValue(100)

thread = QThread()
scanner = Scanner()
scanner.moveToThread(thread)
thread.start()

scan.clicked.connect(scanner.scan)

Но если я изменю последнюю часть на это:

thread = QThread()
scanner = Scanner()
scan.clicked.connect(scanner.scan) # This was at the end!
scanner.moveToThread(thread)
thread.start()

Индикатор выполнения обновляется только в конце (я предполагаю, что все работает в одном потоке). Должно ли это быть неактуально, если я подключу сигнал к слоту до или после перемещения объекта, принимающего объект, в поток.

Ответы на вопрос(2)

Ваш ответ на вопрос