Hi, Try adding self.picture = None into your setTickStringsMode() method. I think the paint uses a rasterised buffer which simply gets redrawn on updates unless the buffer is cleared. So your self.update() is probably actually working - see the paint() method in AxisItem.
Patrick On Friday, 5 February 2021 at 6:37:37 am UTC+10:30 pthomas wrote: > I am collaborating on code that uses a custom class for the time axis: > > class TimeStringAxis(pg.AxisItem): > def __init__(self, orientation='bottom', **kwargs): > super().__init__(orientation, **kwargs) > self.tick_strings_mode = 1 > > def tickSpacing(self, minVal, maxVal, size): > span = abs(maxVal - minVal) > for major, minordiv in const.TICK_SPACINGS: > if span >= 3*major: > break > return [ > (major, 0), > (major/minordiv, 0), > ] > > def tickStrings(self, values, scale, spacing): > if self.tick_strings_mode == 0: > return values > elif self.tick_strings_mode == 1: > return [str(util.TDStr(t)) for t in values] > else: > return values > > def setTickStringsMode(self, mode): > self.tick_strings_mode = mode > self.update() > > The current goal is to be able to change the format of the tick strings > from the plot context menu. The issue is that the tick strings do not > update until a zoom or pan changes the range. Calling update doesn't seem > to do anything. Is there a means to force the axis to repaint after the > call to setTickStringsMode? > > -- You received this message because you are subscribed to the Google Groups "pyqtgraph" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/pyqtgraph/81f9e277-6185-4f56-b12b-6b010d82883en%40googlegroups.com.
