Merge remote-tracking branch 'termim/master' into termim-fixes

ArrowItem: setStyle now combines new options with previously-set options.
AxisItem: fix minor exceptions
This commit is contained in:
Luke Campagnola 2014-02-02 10:43:29 -05:00
commit 96296749be
5 changed files with 14 additions and 9 deletions

View File

@ -2,7 +2,7 @@
"""
Display an animated arrowhead following a curve.
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 attach other types of item to a curve, use CurvePoint.
@ -45,6 +45,7 @@ p.setRange(QtCore.QRectF(-20, -10, 60, 20))
## 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)))
a = pg.CurveArrow(c)
a.setStyle(headLen=40)
p2.addItem(a)
anim = a.makeAnimation(loop=-1)
anim.start()

View File

@ -1,5 +1,6 @@
import initExample ## Add path to library (just for examples; you do not need this)
from os.path import *
from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
import numpy as np
@ -7,7 +8,7 @@ plt = pg.plot(np.random.normal(size=100), title="Simplest possible plotting exam
plt.getAxis('bottom').setTicks([[(x*20, str(x*20)) for x in range(6)]])
## Start Qt event loop unless running in interactive mode or using pyside.
ex = pg.exporters.SVGExporter.SVGExporter(plt.plotItem.scene())
ex.export('/home/luke/tmp/test.svg')
ex.export(join(dirname(__file__), 'test.svg'))
if __name__ == '__main__':
import sys

View File

@ -70,13 +70,16 @@ class ArrowItem(QtGui.QGraphicsPathItem):
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']])
self.path = fn.makeArrowPath(**opt)
self.setPath(self.path)
if opts['pxMode']:
if self.opts['pxMode']:
self.setFlags(self.flags() | self.ItemIgnoresTransformations)
else:
self.setFlags(self.flags() & ~self.ItemIgnoresTransformations)
@ -121,4 +124,4 @@ class ArrowItem(QtGui.QGraphicsPathItem):
return pad

View File

@ -688,7 +688,7 @@ class AxisItem(GraphicsWidget):
## determine mapping between tick values and local coordinates
dif = self.range[1] - self.range[0]
if dif == 0:
xscale = 1
xScale = 1
offset = 0
else:
if axis == 0:
@ -806,10 +806,10 @@ class AxisItem(GraphicsWidget):
## measure all text, make sure there's enough room
if axis == 0:
textSize = np.sum([r.height() for r in textRects])
textSize2 = np.max([r.width() for r in textRects])
textSize2 = np.max([r.width() for r in textRects]) if textRects else 0
else:
textSize = np.sum([r.width() for r in textRects])
textSize2 = np.max([r.height() for r in textRects])
textSize2 = np.max([r.height() for r in textRects]) if textRects else 0
## If the strings are too crowded, stop drawing text now.
## We use three different crowding limits based on the number

View File

@ -112,6 +112,6 @@ class CurveArrow(CurvePoint):
self.arrow = ArrowItem.ArrowItem(**opts)
self.arrow.setParentItem(self)
def setStyle(**opts):
def setStyle(self, **opts):
return self.arrow.setStyle(**opts)