Source code for RWESharp.widgets.ColorPicker

from PySide6.QtWidgets import QToolButton, QColorDialog
from PySide6.QtGui import QColor
from PySide6.QtCore import Signal
from RWESharp.utils import color_lerp


[docs] class ColorPicker(QToolButton): colorPicked = Signal(QColor)
[docs] def __init__(self, parent=None): super().__init__(parent) self.color = QColor(0, 0, 0, 255) self.set_style() self.pressed.connect(self.pick)
[docs] def pick(self): c = QColorDialog.getColor(self.color, options=QColorDialog.ColorDialogOption.ShowAlphaChannel) if not c.isValid(): return self.color = c self.colorPicked.emit(c) self.set_style()
[docs] def set_color(self, color: QColor): self.color = color self.colorPicked.emit(color) self.set_style()
[docs] def set_style(self): self.setStyleSheet(f"background-color: {self.colorname.name()}") e = self.isEnabled() self.setDisabled(True) # yeah for some reason this works self.setEnabled(True) self.setEnabled(e)
@property def colorname(self): return color_lerp(QColor(0, 0, 0), self.color, self.color.alphaF())