Source code for amaze.visu.widgets.combobox
from PyQt5.QtCore import QEvent, QBuffer, QIODevice
from PyQt5.QtGui import QHelpEvent
from PyQt5.QtWidgets import QComboBox, QToolTip
from ...misc import resources, Sign
[docs]
class ZoomingComboBox(QComboBox):
def __init__(self, *args, value_getter, **kwargs):
super().__init__(*args, **kwargs)
self.value_getter = value_getter
[docs]
def event(self, e: QEvent):
if e.type() == QEvent.ToolTip and (name := self.currentText()):
value = self.value_getter()
color = (
"white"
if (value < 0.5 or name not in resources.builtins())
else "black"
)
i = resources.image(Sign(name, value), 128)
e: QHelpEvent
p = i.scaledToHeight(128)
buffer = QBuffer()
buffer.open(QIODevice.WriteOnly)
p.save(buffer, "png")
image = bytes(buffer.data().toBase64()).decode()
html = (
f'<img src="data:image/png;base64,{image}"'
f' style="background-color:{color};">'
)
QToolTip.showText(e.globalPos(), html)
return True
return super().event(e)