В моем приложении у меня есть вызов внешнего модуля, который порождает некоторые потоки, делает некоторые вещи, а затем возвращает значение. Я пытаюсь получить QMessageBox, чтобы показать до и QLabel для обновления после это полно, но я в тупике. Код идет что-то вроде этого (вызывается из QObject.connect на кнопке):PySide QWidget немедленное обновление
def _process(self):
self._message_box.show()
for i in range(3):
rv = external_module_function_with_threads() // blocking function call
label = getattr(self, "label%d" % (i + 1))
label.setText(rv)
При нажатии на кнопку, и функция вызывается, в окне сообщений отображается только после того, как цикл завершается. Метки обновляются только после завершения цикла. Я пробовал вызывать label.repaint() в цикле, но все, что кажется, это сделать окно сообщения раньше (но без текста).
Я знаю, что я не нарушаю правило «GUI operations from the out the main thread» (... правильно?), Так есть способ заставить обновление?