# loading_overlay.py from PyQt6.QtWidgets import QWidget, QLabel from PyQt6.QtCore import Qt from PyQt6.QtGui import QMovie class LoadingOverlay(QWidget): def __init__(self, parent=None): super().__init__(parent) self.setStyleSheet("background-color: rgba(0, 0, 0, 150);") self.setAttribute(Qt.WidgetAttribute.WA_TransparentForMouseEvents, True) self.spinner = QLabel(self) self.spinner.setAlignment(Qt.AlignmentFlag.AlignCenter) self.movie = QMovie("spinner.gif") self.spinner.setMovie(self.movie) layout = self.spinner.geometry() self.resize(parent.size()) self.spinner.resize(100, 100) self.spinner.move((self.width() - 100) // 2, (self.height() - 100) // 2) self.hide() def start(self): self.movie.start() self.show() def stop(self): self.movie.stop() self.hide()