from PySide6.QtWidgets import QLabel from PySide6.QtCore import Qt class StatusLamp(QLabel): def __init__(self, text, on_color="#00FF00", off_color="#333333", text_color="white", font_size=10, shape="rect"): super().__init__(text) self.setAlignment(Qt.AlignCenter) self.on_color = on_color self.off_color = off_color self.text_color = text_color self.shape = shape # 기본 스타일 정의 radius = "12px" if shape == "circle" else "2px" padding = "2px" self.base_style = f""" QLabel {{ color: {self.text_color}; border: 1px solid #555555; border-radius: {radius}; font-family: 'Malgun Gothic'; font-weight: bold; font-size: {font_size}pt; padding: {padding}; }} """ self.set_status(False) def set_status(self, is_on: bool): bg = self.on_color if is_on else self.off_color # 켜졌을 때 글자색을 검정으로 할지 흰색으로 할지 (가독성) fg = "black" if (is_on and self.on_color in ["#00FF00", "#FFFF00", "#00BFFF", "#FFA500"]) else self.text_color self.setStyleSheet(f""" {self.base_style} QLabel {{ background-color: {bg}; color: {fg}; }} """)