2013-12-22 07:08:39 +00:00
|
|
|
from ..Qt import QtGui, QtCore
|
|
|
|
from ..GraphicsScene import GraphicsScene
|
2012-05-11 22:05:41 +00:00
|
|
|
from .GraphicsItem import GraphicsItem
|
2012-03-02 02:55:32 +00:00
|
|
|
|
|
|
|
__all__ = ['GraphicsWidget']
|
2012-04-16 20:45:55 +00:00
|
|
|
|
|
|
|
class GraphicsWidget(GraphicsItem, QtGui.QGraphicsWidget):
|
2012-06-18 23:40:15 +00:00
|
|
|
|
|
|
|
_qtBaseClass = QtGui.QGraphicsWidget
|
2012-03-02 02:55:32 +00:00
|
|
|
def __init__(self, *args, **kargs):
|
|
|
|
"""
|
2012-04-16 20:45:55 +00:00
|
|
|
**Bases:** :class:`GraphicsItem <pyqtgraph.GraphicsItem>`, :class:`QtGui.QGraphicsWidget`
|
|
|
|
|
2012-03-02 02:55:32 +00:00
|
|
|
Extends QGraphicsWidget with several helpful methods and workarounds for PyQt bugs.
|
2012-04-16 20:45:55 +00:00
|
|
|
Most of the extra functionality is inherited from :class:`GraphicsItem <pyqtgraph.GraphicsItem>`.
|
2012-03-02 02:55:32 +00:00
|
|
|
"""
|
|
|
|
QtGui.QGraphicsWidget.__init__(self, *args, **kargs)
|
2012-04-16 20:45:55 +00:00
|
|
|
GraphicsItem.__init__(self)
|
2012-06-18 23:40:15 +00:00
|
|
|
|
|
|
|
## done by GraphicsItem init
|
|
|
|
#GraphicsScene.registerObject(self) ## workaround for pyqt bug in graphicsscene.items()
|
2012-03-02 02:55:32 +00:00
|
|
|
|
2013-11-17 01:23:41 +00:00
|
|
|
# Removed due to https://bugreports.qt-project.org/browse/PYSIDE-86
|
|
|
|
#def itemChange(self, change, value):
|
|
|
|
## BEWARE: Calling QGraphicsWidget.itemChange can lead to crashing!
|
|
|
|
##ret = QtGui.QGraphicsWidget.itemChange(self, change, value) ## segv occurs here
|
|
|
|
## The default behavior is just to return the value argument, so we'll do that
|
|
|
|
## without calling the original method.
|
|
|
|
#ret = value
|
|
|
|
#if change in [self.ItemParentHasChanged, self.ItemSceneHasChanged]:
|
|
|
|
#self._updateView()
|
|
|
|
#return ret
|
|
|
|
|
2012-03-02 02:55:32 +00:00
|
|
|
def setFixedHeight(self, h):
|
|
|
|
self.setMaximumHeight(h)
|
|
|
|
self.setMinimumHeight(h)
|
|
|
|
|
|
|
|
def setFixedWidth(self, h):
|
|
|
|
self.setMaximumWidth(h)
|
|
|
|
self.setMinimumWidth(h)
|
|
|
|
|
|
|
|
def height(self):
|
|
|
|
return self.geometry().height()
|
|
|
|
|
|
|
|
def width(self):
|
|
|
|
return self.geometry().width()
|
|
|
|
|
|
|
|
def boundingRect(self):
|
|
|
|
br = self.mapRectFromParent(self.geometry()).normalized()
|
|
|
|
#print "bounds:", br
|
|
|
|
return br
|
|
|
|
|
|
|
|
def shape(self): ## No idea why this is necessary, but rotated items do not receive clicks otherwise.
|
|
|
|
p = QtGui.QPainterPath()
|
|
|
|
p.addRect(self.boundingRect())
|
|
|
|
#print "shape:", p.boundingRect()
|
|
|
|
return p
|
|
|
|
|
|
|
|
|