42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
|
|
# coding:utf-8
|
||
|
|
from PySide6.QtGui import QPainterPath, QPainter, QColor
|
||
|
|
|
||
|
|
from ..widgets.acrylic_label import AcrylicBrush
|
||
|
|
from ...common.style_sheet import isDarkTheme
|
||
|
|
|
||
|
|
|
||
|
|
class AcrylicWidget:
|
||
|
|
""" Acrylic widget """
|
||
|
|
|
||
|
|
def __init__(self, *args, **kwargs):
|
||
|
|
super().__init__(*args, **kwargs)
|
||
|
|
self.acrylicBrush = AcrylicBrush(self, 30)
|
||
|
|
|
||
|
|
def _updateAcrylicColor(self):
|
||
|
|
if isDarkTheme():
|
||
|
|
tintColor = QColor(32, 32, 32, 200)
|
||
|
|
luminosityColor = QColor(0, 0, 0, 0)
|
||
|
|
else:
|
||
|
|
tintColor = QColor(255, 255, 255, 180)
|
||
|
|
luminosityColor = QColor(255, 255, 255, 0)
|
||
|
|
|
||
|
|
self.acrylicBrush.tintColor = tintColor
|
||
|
|
self.acrylicBrush.luminosityColor = luminosityColor
|
||
|
|
|
||
|
|
def acrylicClipPath(self):
|
||
|
|
return QPainterPath()
|
||
|
|
|
||
|
|
def _drawAcrylic(self, painter: QPainter):
|
||
|
|
path = self.acrylicClipPath()
|
||
|
|
if not path.isEmpty():
|
||
|
|
self.acrylicBrush.clipPath = self.acrylicClipPath()
|
||
|
|
|
||
|
|
self._updateAcrylicColor()
|
||
|
|
self.acrylicBrush.paint()
|
||
|
|
|
||
|
|
def paintEvent(self, e):
|
||
|
|
painter = QPainter(self)
|
||
|
|
painter.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform)
|
||
|
|
|
||
|
|
self._drawAcrylic(painter)
|
||
|
|
super().paintEvent(e)
|