From ea9e8a720b4dd79465fd8c12f6fbf8331a3b1c65 Mon Sep 17 00:00:00 2001 From: Luke Campagnola Date: Fri, 15 Sep 2017 09:09:45 -0700 Subject: [PATCH 1/2] ArrowItem: rotate painterpath instead of the item This makes it easier to attach text to the arrow. --- pyqtgraph/graphicsItems/ArrowItem.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pyqtgraph/graphicsItems/ArrowItem.py b/pyqtgraph/graphicsItems/ArrowItem.py index 77e6195f..897cbc50 100644 --- a/pyqtgraph/graphicsItems/ArrowItem.py +++ b/pyqtgraph/graphicsItems/ArrowItem.py @@ -39,7 +39,6 @@ class ArrowItem(QtGui.QGraphicsPathItem): self.setStyle(**defaultOpts) - self.rotate(self.opts['angle']) self.moveBy(*self.opts['pos']) def setStyle(self, **opts): @@ -72,7 +71,10 @@ class ArrowItem(QtGui.QGraphicsPathItem): self.opts.update(opts) opt = dict([(k,self.opts[k]) for k in ['headLen', 'tipAngle', 'baseAngle', 'tailLen', 'tailWidth']]) - self.path = fn.makeArrowPath(**opt) + tr = QtGui.QTransform() + tr.rotate(self.opts['angle']) + self.path = tr.map(fn.makeArrowPath(**opt)) + self.setPath(self.path) self.setPen(fn.mkPen(self.opts['pen'])) @@ -82,7 +84,8 @@ class ArrowItem(QtGui.QGraphicsPathItem): self.setFlags(self.flags() | self.ItemIgnoresTransformations) else: self.setFlags(self.flags() & ~self.ItemIgnoresTransformations) - + + def paint(self, p, *args): p.setRenderHint(QtGui.QPainter.Antialiasing) QtGui.QGraphicsPathItem.paint(self, p, *args) From 7d467cb65242d5ceda510290576a1867b9c2c36a Mon Sep 17 00:00:00 2001 From: Luke Campagnola Date: Fri, 26 Jan 2018 08:58:18 -0800 Subject: [PATCH 2/2] Add changelog entry describing new behavior --- CHANGELOG | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 388f51b9..33106c8f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,13 @@ +pyqtgraph-0.11.0 (in development) + + API / behavior changes: + - ArrowItem's `angle` option now rotates the arrow without affecting its coordinate system. + The result is visually the same, but children of ArrowItem are no longer rotated + (this allows screen-aligned text to be attached more easily). + To mimic the old behavior, use ArrowItem.rotate() instead of the `angle` argument. + + + pyqtgraph-0.10.0 New Features: