generated from LouisMazin/PythonApplicationTemplate
35 lines
1.3 KiB
Python
35 lines
1.3 KiB
Python
from PyQt6.QtWidgets import QProgressBar, QWidget, QVBoxLayout, QLabel
|
|
from PyQt6.QtCore import Qt
|
|
|
|
class LoadingBar(QWidget):
|
|
def __init__(self, label_text: str = "", parent=None) -> None:
|
|
super().__init__(parent)
|
|
layout = QVBoxLayout(self)
|
|
layout.setAlignment(Qt.AlignmentFlag.AlignBaseline)
|
|
self.label = QLabel(label_text, self)
|
|
self.progress = QProgressBar(self)
|
|
self.progress.setMinimum(0)
|
|
self.progress.setMaximum(100)
|
|
layout.addWidget(self.label)
|
|
layout.addWidget(self.progress)
|
|
|
|
def set_label(self, text: str) -> None:
|
|
self.label.setText(text)
|
|
|
|
def set_progress(self, value: int) -> None:
|
|
self.progress.setValue(value)
|
|
|
|
def set_progress_range(self, value: int, min_range: int, max_range: int) -> None:
|
|
"""Set progress within a specific range"""
|
|
if min_range >= max_range:
|
|
return
|
|
# Clamp value to range
|
|
clamped_value = max(min_range, min(max_range, value))
|
|
# Convert to 0-100 scale
|
|
progress = int(((clamped_value - min_range) / (max_range - min_range)) * 100)
|
|
self.progress.setValue(progress)
|
|
|
|
def get_progress(self) -> int:
|
|
"""Get current progress value"""
|
|
return self.progress.value()
|