77
88import numpy as np
99from AnyQt .QtCore import Qt , QRectF , QSize , QTimer , pyqtSignal as Signal , \
10- QObject
10+ QObject , QEvent
1111from AnyQt .QtGui import QColor , QPen , QBrush , QPainterPath , QTransform , \
1212 QPainter , QPalette
1313from AnyQt .QtWidgets import QApplication , QToolTip , QGraphicsTextItem , \
3939
4040
4141class LegendItem (PgLegendItem ):
42- def __init__ (self , size = None , offset = None , pen = None , brush = None ):
42+ def __init__ (
43+ self , size = None , offset = None , pen = None , brush = None ,
44+ ):
4345 super ().__init__ (size , offset )
4446
4547 self .layout .setContentsMargins (5 , 5 , 5 , 5 )
4648 self .layout .setHorizontalSpacing (15 )
4749 self .layout .setColumnAlignment (1 , Qt .AlignLeft | Qt .AlignVCenter )
48-
49- if pen is None :
50- pen = QPen ( QColor ( 196 , 197 , 193 , 200 ), 1 )
51- pen . setCosmetic ( True )
50+ if pen is not None :
51+ pen = QPen ( pen )
52+ if brush is not None :
53+ brush = QBrush ( brush )
5254 self .__pen = pen
53-
54- if brush is None :
55- brush = QBrush (QColor (232 , 232 , 232 , 100 ))
5655 self .__brush = brush
5756
5857 def restoreAnchor (self , anchors ):
@@ -66,16 +65,17 @@ def restoreAnchor(self, anchors):
6665
6766 # pylint: disable=arguments-differ
6867 def paint (self , painter , _option , _widget = None ):
69- painter .setPen (self .__pen )
70- painter .setBrush (self .__brush )
68+ painter .setPen (self .pen () )
69+ painter .setBrush (self .brush () )
7170 rect = self .contentsRect ()
7271 painter .drawRoundedRect (rect , 2 , 2 )
7372
7473 def addItem (self , item , name ):
7574 super ().addItem (item , name )
76- # Fix-up the label alignment
75+ # Fix-up the label alignment, and color
76+ color = self .palette ().color (QPalette .Text )
7777 _ , label = self .items [- 1 ]
78- label .setText (name , justify = "left" )
78+ label .setText (name , justify = "left" , color = color )
7979
8080 def clear (self ):
8181 """
@@ -91,6 +91,31 @@ def clear(self):
9191
9292 self .updateSize ()
9393
94+ def pen (self ):
95+ if self .__pen is not None :
96+ return QPen (self .__pen )
97+ else :
98+ color = self .palette ().color (QPalette .Window )
99+ color .setAlpha (230 )
100+ pen = QPen (color , 1 )
101+ pen .setCosmetic (True )
102+ return pen
103+
104+ def brush (self ):
105+ if self .__brush is not None :
106+ return QBrush (self .__brush )
107+ else :
108+ color = self .palette ().color (QPalette .Window )
109+ color .setAlpha (100 )
110+ return QBrush (color )
111+
112+ def changeEvent (self , event : QEvent ):
113+ if event .type () == QEvent .PaletteChange :
114+ color = self .palette ().color (QPalette .Text )
115+ for sample , label in self .items :
116+ label .setText (label .text , color = color )
117+ super ().changeEvent (event )
118+
94119
95120def bound_anchor_pos (corner , parentpos ):
96121 corner = np .clip (corner , 0 , 1 )
0 commit comments