diff --git a/modules/ui/BaseTrainUIView.py b/modules/ui/BaseTrainUIView.py index ff3acd2b7..c698c051c 100644 --- a/modules/ui/BaseTrainUIView.py +++ b/modules/ui/BaseTrainUIView.py @@ -53,7 +53,10 @@ def show_window(self, window): pass def connect_window_closed(self, window, callback): pass def sync_cloud_secrets(self): - self.ui_state.get_var("secrets.cloud").update(self.controller.train_config.secrets.cloud) + # Called from training thread — defer to main thread + self.schedule_on_main_thread( + lambda: self.ui_state.get_var("secrets.cloud").update(self.controller.train_config.secrets.cloud) + ) def start_training(self): self.controller.start_training() diff --git a/modules/ui/PySide6VideoToolUIView.py b/modules/ui/PySide6VideoToolUIView.py index 71b442dcf..18772adf6 100644 --- a/modules/ui/PySide6VideoToolUIView.py +++ b/modules/ui/PySide6VideoToolUIView.py @@ -6,7 +6,7 @@ from modules.util.ui.PySide6UIState import PySide6UIState from PIL.ImageQt import ImageQt -from PySide6.QtCore import Qt +from PySide6.QtCore import Qt, QTimer from PySide6.QtGui import QPixmap from PySide6.QtWidgets import ( QDialog, @@ -112,14 +112,22 @@ def _create_textbox(self, master, row, col, width, height, ui_state, var_name): widget.textChanged.connect(lambda: var.set(widget.toPlainText())) return widget + def schedule_on_main_thread(self, fn): + QTimer.singleShot(0, self, fn) + def update_status(self, status_text: str): - self._status_box.append(status_text) + # Called from the video tool's worker thread — defer to main thread + self.schedule_on_main_thread(lambda: self._status_box.append(status_text)) def clear_status(self): self._status_box.clear() def update_preview(self, preview_image, label_text: str): + # Called from the video tool's worker thread — defer to main thread pixmap = QPixmap.fromImage(ImageQt(preview_image.convert("RGBA"))) + self.schedule_on_main_thread(lambda: self._do_update_preview(pixmap, label_text)) + + def _do_update_preview(self, pixmap: QPixmap, label_text: str): self._preview_label.setPixmap( pixmap.scaled(150, 150, Qt.KeepAspectRatio, Qt.SmoothTransformation) )