36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
from PySide6.QtWidgets import QWidget, QLabel, QVBoxLayout
|
|
from PySide6.QtGui import QPalette, QColor
|
|
from PySide6.QtCore import Qt
|
|
|
|
class PlaceholderWidget(QWidget):
|
|
"""A custom widget to display a colored background with centered text."""
|
|
def __init__(self, text: str, color: str, parent=None):
|
|
super().__init__(parent)
|
|
self.setAutoFillBackground(True)
|
|
self.set_color(color)
|
|
|
|
self.label = QLabel(text)
|
|
self.label.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
|
|
|
font = self.label.font()
|
|
font.setPointSize(24)
|
|
self.label.setFont(font)
|
|
self.label.setWordWrap(True)
|
|
|
|
layout = QVBoxLayout(self)
|
|
layout.addWidget(self.label)
|
|
self.setLayout(layout)
|
|
|
|
def set_text(self, text: str):
|
|
self.label.setText(text)
|
|
|
|
def set_color(self, color: str):
|
|
palette = self.palette()
|
|
palette.setColor(QPalette.ColorRole.Window, QColor(color))
|
|
self.setPalette(palette)
|
|
|
|
def set_text_color(self, color: str):
|
|
palette = self.label.palette()
|
|
palette.setColor(QPalette.ColorRole.WindowText, QColor(color))
|
|
self.label.setPalette(palette)
|