Fixes for examples\customPlot.py (#1448)

* Fix examples\customPlot.py: Not object-oriented

Copy-paste error: I referenced a specific object instead of self. Fixed.

* Fix examples\customPlot.py: Allow calling setTicks more than once

This fixes a bug where TickSliderItem is expected to return ticks.keys() but while it returns ticks.items().
Also: Minor code correction.

* Fix examples\customPlot.py: Avoid scaling differences

Consider padding of TickSliderItem for link between ViewBox and ticks

Co-authored-by: 2xB <2xB@users.noreply.github.com>
This commit is contained in:
2xB 2020-11-19 19:19:32 +01:00 committed by GitHub
parent 6c14204682
commit 5adb1b9a5b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -39,29 +39,36 @@ class CustomTickSliderItem(pg.TickSliderItem):
self._range = [0,1]
def setTicks(self, ticks):
for tick in tickViewer.listTicks():
for tick, pos in self.listTicks():
self.removeTick(tick)
self.visible_ticks = {}
self.visible_ticks = {}
self.all_ticks = ticks
self.updateRange(None, self._range)
def updateRange(self, vb, viewRange):
origin = self.tickSize/2.
length = self.length
lengthIncludingPadding = length + self.tickSize + 2
self._range = viewRange
for pos in self.all_ticks:
visible = pos >= viewRange[0] and pos <= viewRange[1]
if pos not in self.visible_ticks:
self.visible_ticks[pos] = self.addTick(pos, movable=False, color="333333")
tick = self.visible_ticks[pos]
tickValueIncludingPadding = (pos - viewRange[0]) / (viewRange[1] - viewRange[0])
tickValue = (tickValueIncludingPadding*lengthIncludingPadding - origin) / length
visible = tickValue >= 0 and tickValue <= 1
if visible:
if pos not in self.visible_ticks:
self.visible_ticks[pos] = self.addTick(pos, movable=False, color="333333")
tick = self.visible_ticks[pos]
tickValue = (pos - viewRange[0]) / (viewRange[1] - viewRange[0])
self.setTickValue(tick, tickValue)
elif pos in self.visible_ticks:
self.removeTick(self.visible_ticks[pos])
del self.visible_ticks[pos]