# monitor_card.py from PyQt6.QtWidgets import QWidget, QVBoxLayout, QLabel from PyQt6.QtCore import Qt from PyQt6.QtGui import QMovie class MonitorCard(QWidget): def __init__(self, title, bg_color="#2e2e2e"): super().__init__() self.setStyleSheet(f""" background-color: {bg_color}; border-radius: 10px; border: 1px solid #444; """) layout = QVBoxLayout() self.title = QLabel(title) self.title.setStyleSheet("font-weight: bold; font-size: 50px; color: white;") self.title.setAlignment(Qt.AlignmentFlag.AlignCenter) self.value = QLabel("--") self.value.setStyleSheet("font-size: 40px; font-weight: bold; color: white;") self.value.setAlignment(Qt.AlignmentFlag.AlignCenter) self.spinner = QLabel() self.spinner.setAlignment(Qt.AlignmentFlag.AlignCenter) self.movie = QMovie("spinner.gif") self.spinner.setMovie(self.movie) self.spinner.hide() layout.addWidget(self.title) layout.addWidget(self.value) layout.addWidget(self.spinner) self.setLayout(layout) def start_loading(self): self.value.hide() self.spinner.show() self.movie.start() def stop_loading(self): self.movie.stop() self.spinner.hide() self.value.show() def update_value(self, text): self.stop_loading() self.value.setText(text)