Source code for pyqtgraph.graphicsItems.ButtonItem
from ..Qt import QtCore, QtGui
from .GraphicsObject import GraphicsObject
__all__ = ['ButtonItem']
[docs]
class ButtonItem(GraphicsObject):
"""Button graphicsItem displaying an image."""
clicked = QtCore.Signal(object)
[docs]
def __init__(self, imageFile=None, width=None, parentItem=None, pixmap=None):
self.enabled = True
GraphicsObject.__init__(self)
if imageFile is not None:
self.setImageFile(imageFile)
elif pixmap is not None:
self.setPixmap(pixmap)
self._width = width
if self._width is None:
self._width = self.pixmap.width() / self.pixmap.devicePixelRatio()
if parentItem is not None:
self.setParentItem(parentItem)
self.setOpacity(0.7)
def setImageFile(self, imageFile):
self.setPixmap(QtGui.QPixmap(imageFile))
def setPixmap(self, pixmap):
self.pixmap = pixmap
self.update()
def mouseClickEvent(self, ev):
if self.enabled:
self.clicked.emit(self)
def hoverEvent(self, ev):
if not self.enabled:
return
if ev.isEnter():
self.setOpacity(1.0)
elif ev.isExit():
self.setOpacity(0.7)
def disable(self):
self.enabled = False
self.setOpacity(0.4)
def enable(self):
self.enabled = True
self.setOpacity(0.7)
def paint(self, p, *args):
p.setRenderHint(p.RenderHint.Antialiasing)
tgtRect = QtCore.QRectF(0, 0, self._width, self._width)
srcRect = QtCore.QRectF(self.pixmap.rect())
p.drawPixmap(tgtRect, self.pixmap, srcRect)
def boundingRect(self):
return QtCore.QRectF(0, 0, self._width, self._width)