[Matplotlib-users] Migrating some code which use NavigationToolbar2QT to matplotlib 2.x AND 3.x

Thomas Caswell tcaswell at gmail.com
Fri Feb 15 12:10:45 EST 2019


Fedric,

Hello from NSLS-II!

`_veiws` is private so we reserve the right to change it at any time.
 `.views()` was a Stack of lists of the xlim and ylim of all of the Axes in
the Figure.  I suggest replacing it with something like

class HiddenToolbar(NavigationToolbar2QT):
    def __init__(self, corner_callback, canvas):
        super(HiddenToolbar, self).__init__(canvas, None)
        self._corner_callback = corner_callback
        self.zoom()

    def _generate_key(self):
        limits = []
        for a in self.canvas.figure.get_axes():
            limits.append([a.get_xlim(), a.get_ylim()])
        return limits

    def press(self, event):
        self._corner_preclick = self._generate_key()

    def release(self, event):
        if self._corner_preclick == self._generate_key():
            self._corner_callback(event.xdata, event.ydata)
        self._corner_preclick = None


which only uses public APIs from upstream.

What is the purpose of this code?  It looks like this is a de-bouncer to
cancel a callback if something changes the limits while the mouse is held
down?

Tom

On Fri, Feb 15, 2019 at 3:52 AM PICCA Frederic-Emmanuel <
frederic-emmanuel.picca at synchrotron-soleil.fr> wrote:

> Hello,
>
> I have this code in one of  the project I neded to update.
> Since we are targetting Debian buster, I need to support
> matplotlib 2.X (python2) AND matplotlib 3.X  (python3)
>
>
> class HiddenToolbar(NavigationToolbar2QT):
>     def __init__(self, corner_callback, canvas):
>         super(HiddenToolbar, self).__init__(canvas, None)
>         self._corner_callback = corner_callback
>         self.zoom()
>
>     def press(self, event):
>         self._corner_preclick = self._views()
>
>     def release(self, event):
>         if self._corner_preclick == self._views():
>             self._corner_callback(event.xdata, event.ydata)
>         self._corner_preclick = None
>
>
>
> The problem, I have is with the  _views() method.
> The 3.X version, complains that it is not available in the
> NavigationToolbar2QT.
>
> so I would like to know how to rewrite this in order to be 2.X and 3.X
> compatible.
> I tryed to find some information in the documentation about this but I did
> not find it.
>
> thanks for your help.
>
> Frederic
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users at python.org
> https://mail.python.org/mailman/listinfo/matplotlib-users
>


-- 
Thomas Caswell
tcaswell at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20190215/a38d70b7/attachment.html>


More information about the Matplotlib-users mailing list