[Matplotlib-users] Event connect error when using Tk and scrolling

Juan Nunez-Iglesias jni.soma at gmail.com
Wed Jan 11 06:44:40 EST 2017


Hi all,

Thanks for taking a look. Unfortunately I don’t have time right now to test with a new version of Anaconda Python, but I should mention that the original error reported was using Anaconda + Python 3.5, mpl 1.5.

Will give it another go tomorrow with an updated anaconda distro, and maybe check out the latest ActiveTCL if relevant.

Thanks!

Juan.

On 11 Jan 2017, 8:56 AM +1100, Scott Lasley <selasley at icloud.com>, wrote:
> Juan,
>
> I installed ActiveTCL8.5.18 as described on python.org's Tcl/Tk page for macOS and now the script runs under python3.6 without errors when scrolling with the trackpad.  If your usage allows, you should consider installing a newer version of Tcl/Tk if you are using python.org's python or switch to Anaconda's python.
>
> Scott
>
>
> > On Jan 10, 2017, at 11:33 AM, Ryan May <rmay31 at gmail.com> wrote:
> >
> > Works for me on macOS 10.12.2, Python 3.5.2 (conda-forge) and matplotlib 2.0rc2.
> >
> > Ryan
> >
> > On Tue, Jan 10, 2017 at 12:48 AM, Scott Lasley <selasley at icloud.com> wrote:
> > I get the error when running under python3.6 and scrolling with the trackpad.
> > OS X 10.12.2 with the system installed Tk version 8.5, python 3.6.0, matplotlib 2.0.0rc2+2939.g109251f
> >
> > Traceback (most recent call last):
> >   File "<stdin>", line 1, in <module>
> >   File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/pyplot.py", line 252, in show
> >     return _show(*args, **kw)
> >   File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 188, in __call__
> >     self.mainloop()
> >   File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/backends/backend_tkagg.py", line 71, in mainloop
> >     Tk.mainloop()
> >   File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 557, in mainloop
> >     _default_root.tk.mainloop(n)
> > UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
> > >>> UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
> >
> >
> > The script works when run under python 2.7.13 and scrolling with the trackpad.
> >
> >
> > > On Jan 9, 2017, at 23:40, Thomas Caswell <tcaswell at gmail.com> wrote:
> > >
> > > I can not reproduce this on linux :/
> > >
> > > This looks like it is coming out of Tk's handling of the scroll event before it is handed off to mpl.
> > >
> > > Tom
> > >
> > > On Mon, Jan 9, 2017 at 10:28 PM Juan Nunez-Iglesias <jni.soma at gmail.com> wrote:
> > > Hi all,
> > >
> > > I’m trying to play with the `basic_mpl_connect.py` example from Ben Root’s “Interactive Applications Using Matplotlib” book, reproduced below in its entirety. (With the addition of selecting TkAgg as the backend. I need to do this because I’m aiming to embed into a Tk app *and* the MacOSX backend doesn’t capture my keystrokes.)
> > >
> > > Everything works fine, but when I try to use the scroll wheel on my mouse, or two-finger scrolling on my Macbook trackpad, everything dies with the following message:
> > >
> > > Traceback (most recent call last):
> > >   File "basic_mpl_connect.py", line 20, in <module>
> > >     plt.show()
> > >   File "/Users/jni/conda/envs/ana/lib/python3.5/site-packages/matplotlib/pyplot.py", line 252, in show
> > >     return _show(*args, **kw)
> > >   File "/Users/jni/conda/envs/ana/lib/python3.5/site-packages/matplotlib/backend_bases.py", line 192, in __call__
> > >     self.mainloop()
> > >   File "/Users/jni/conda/envs/ana/lib/python3.5/site-packages/matplotlib/backends/backend_tkagg.py", line 74, in mainloop
> > >     Tk.mainloop()
> > >   File "/Users/jni/conda/envs/ana/lib/python3.5/tkinter/__init__.py", line 405, in mainloop
> > >     _default_root.tk.mainloop(n)
> > > UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
> > >
> > > This is true even if I explicitly connect the “scroll_event” (below).
> > >
> > > Any ideas?
> > >
> > > Thanks,
> > >
> > > Juan.
> > >
> > > ===================================
> > >
> > > import matplotlib
> > > matplotlib.use('TkAgg')
> > > matplotlib.verbose.level = 'debug'
> > > import matplotlib.pyplot as plt
> > >
> > > def process_key(event):
> > >     print("Key:", event.key)
> > >
> > > def process_button(event):
> > >     print("Button:", event.x, event.y, event.xdata, event.ydata, event.button)
> > >
> > > def process_scroll(event):
> > >     print("Scroll")
> > >
> > > fig, ax = plt.subplots(1, 1)
> > > fig.canvas.mpl_connect('key_press_event', process_key)
> > > fig.canvas.mpl_connect('button_press_event', process_button)
> > > fig.canvas.mpl_connect('scroll_event', process_scroll)
> > > plt.show()
> > > _______________________________________________
> > > Matplotlib-users mailing list
> > > Matplotlib-users at python.org
> > > https://mail.python.org/mailman/listinfo/matplotlib-users
> >
> > --
> > Ryan May
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20170111/68a4d53c/attachment.html>


More information about the Matplotlib-users mailing list