diff --git a/qt/aqt/progress.py b/qt/aqt/progress.py index 93fa712d7..692268a79 100644 --- a/qt/aqt/progress.py +++ b/qt/aqt/progress.py @@ -232,20 +232,24 @@ class ProgressManager: next_levels = self._levels - 1 next_levels = max(0, next_levels) - if next_levels == 0: - if self._win: - self._closeWin() - if self._busy_cursor_timer: - self._busy_cursor_timer.stop() - self._busy_cursor_timer = None - self._restore_cursor() - if self._show_timer: - self._show_timer.stop() - self._show_timer = None - if self._backend_timer: - self._backend_timer.stop() - self._backend_timer.deleteLater() - self._backend_timer = None + try: + if next_levels == 0: + if self._win: + self._closeWin() + if self._busy_cursor_timer: + self._busy_cursor_timer.stop() + self._busy_cursor_timer = None + self._restore_cursor() + if self._show_timer: + self._show_timer.stop() + self._show_timer = None + if self._backend_timer: + self._backend_timer.stop() + self._backend_timer.deleteLater() + self._backend_timer = None + except RuntimeError as exc: + # during shutdown, the timers may have already been deleted by Qt + print(f"do_window_cleanup error ignored: {exc}") self._levels = next_levels # if the window is not currently shown, we can do cleanup immediately, if it is