Skip to content
Snippets Groups Projects
Commit 95bddca0 authored by Mikhail Terekhov's avatar Mikhail Terekhov
Browse files

In ArrowItem allow individual parameter change through setStyle call.

parent fe11e6c1
No related branches found
No related tags found
No related merge requests found
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
""" """
Display an animated arrowhead following a curve. Display an animated arrowhead following a curve.
This example uses the CurveArrow class, which is a combination This example uses the CurveArrow class, which is a combination
of ArrowItem and CurvePoint. of ArrowItem and CurvePoint.
To place a static arrow anywhere in a scene, use ArrowItem. To place a static arrow anywhere in a scene, use ArrowItem.
To attach other types of item to a curve, use CurvePoint. To attach other types of item to a curve, use CurvePoint.
...@@ -45,6 +45,7 @@ p.setRange(QtCore.QRectF(-20, -10, 60, 20)) ...@@ -45,6 +45,7 @@ p.setRange(QtCore.QRectF(-20, -10, 60, 20))
## Animated arrow following curve ## Animated arrow following curve
c = p2.plot(x=np.sin(np.linspace(0, 2*np.pi, 1000)), y=np.cos(np.linspace(0, 6*np.pi, 1000))) c = p2.plot(x=np.sin(np.linspace(0, 2*np.pi, 1000)), y=np.cos(np.linspace(0, 6*np.pi, 1000)))
a = pg.CurveArrow(c) a = pg.CurveArrow(c)
a.setStyle(headLen=40)
p2.addItem(a) p2.addItem(a)
anim = a.makeAnimation(loop=-1) anim = a.makeAnimation(loop=-1)
anim.start() anim.start()
......
...@@ -70,13 +70,16 @@ class ArrowItem(QtGui.QGraphicsPathItem): ...@@ -70,13 +70,16 @@ class ArrowItem(QtGui.QGraphicsPathItem):
brush The brush used to fill the arrow. brush The brush used to fill the arrow.
================= ================================================= ================= =================================================
""" """
self.opts = opts try:
self.opts.update(opts)
except AttributeError:
self.opts = opts
opt = dict([(k,self.opts[k]) for k in ['headLen', 'tipAngle', 'baseAngle', 'tailLen', 'tailWidth']]) opt = dict([(k,self.opts[k]) for k in ['headLen', 'tipAngle', 'baseAngle', 'tailLen', 'tailWidth']])
self.path = fn.makeArrowPath(**opt) self.path = fn.makeArrowPath(**opt)
self.setPath(self.path) self.setPath(self.path)
if opts['pxMode']: if self.opts['pxMode']:
self.setFlags(self.flags() | self.ItemIgnoresTransformations) self.setFlags(self.flags() | self.ItemIgnoresTransformations)
else: else:
self.setFlags(self.flags() & ~self.ItemIgnoresTransformations) self.setFlags(self.flags() & ~self.ItemIgnoresTransformations)
...@@ -121,4 +124,4 @@ class ArrowItem(QtGui.QGraphicsPathItem): ...@@ -121,4 +124,4 @@ class ArrowItem(QtGui.QGraphicsPathItem):
return pad return pad
\ No newline at end of file
...@@ -112,6 +112,6 @@ class CurveArrow(CurvePoint): ...@@ -112,6 +112,6 @@ class CurveArrow(CurvePoint):
self.arrow = ArrowItem.ArrowItem(**opts) self.arrow = ArrowItem.ArrowItem(**opts)
self.arrow.setParentItem(self) self.arrow.setParentItem(self)
def setStyle(**opts): def setStyle(self, **opts):
return self.arrow.setStyle(**opts) return self.arrow.setStyle(**opts)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment