Event connect error when using Tk and scrolling

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()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20170110/d8fa8a73/attachment.html>

I can not reproduce this on linux :confused:

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
Matplotlib-users Info Page

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20170110/dfad86bb/attachment-0001.html&gt;

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 :confused:

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
Matplotlib-users Info Page
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users at python.org
Matplotlib-users Info Page

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 :confused:
>
> 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
> Matplotlib-users Info Page
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users at python.org
> Matplotlib-users Info Page

_______________________________________________
Matplotlib-users mailing list
Matplotlib-users at python.org
Matplotlib-users Info Page

--
Ryan May
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20170110/9713e170/attachment.html&gt;

Juan,

I installed ActiveTCL8.5.18 as described on python.org's Tcl/Tk page for macOS <https://www.python.org/download/mac/tcltk/&gt; 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 :confused:
>
> 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
> Matplotlib-users Info Page

--
Ryan May

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20170110/abbaca41/attachment-0001.html&gt;

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 :confused:
> >
> > 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
> >?Matplotlib-users Info Page
>
> --
> Ryan May
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20170111/68a4d53c/attachment.html&gt;

Hmm, installing ActiveTCL didn't help when using Anaconda Python. Which makes sense, but it was worth a shot. =)

···

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 :confused:
> >
> > 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
> >?Matplotlib-users Info Page
>
> --
> Ryan May
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20170117/0e64c499/attachment.html&gt;

I installed the python 3.5 version of anaconda 4.2.0. The conda list command shows tk 8.5.18 installed, but
tkinter.Tk().eval('info patchlevel') returns 8.5.9. It looks like tkinter is hard coded to use the system installed Tk and Tcl libraries as shown by the output of
otool -L anaconda/lib/python3.5/lib-dynload/_tkinter.so
otool -L anaconda/pkgs/python-3.5.2-0/lib/python3.5/lib-dynload/_tkinter.so

This stackoverflow answer lead me to a possible solution -

After using the commands below in Terminal to change the path to libtk8 and libtcl8 that tkinter uses,
tkinter.Tk().eval('info patchlevel') returns 8.5.18 and your script runs without errors when scrolling. It does output a couple of deprecation warnings when it first runs. Mucking with library paths like this is not a great solution. Your best bet might be to contact support at contimuum or ask about this problem on their anaconda mailing list.

Here are the commands I ran to update the tkinter paths (you may need to have the command line developer tools installed):

install_name_tool -change \
"/System/Library/Frameworks/Tk.framework/Versions/8.5/Tk" \
"@loader_path/../../libtk8.5.dylib" \
anaconda/lib/python3.5/lib-dynload/_tkinter.so

install_name_tool -change \
"/System/Library/Frameworks/Tcl.framework/Versions/8.5/Tcl" \
"@loader_path/../../libtcl8.5.dylib" \
anaconda/lib/python3.5/lib-dynload/_tkinter.so

install_name_tool -change \
"/System/Library/Frameworks/Tk.framework/Versions/8.5/Tk" \
"@loader_path/../../libtk8.5.dylib" \
anaconda/pkgs/python-3.5.2-0/lib/python3.5/lib-dynload/_tkinter.so

install_name_tool -change \
"/System/Library/Frameworks/Tcl.framework/Versions/8.5/Tcl" \
"@loader_path/../../libtcl8.5.dylib" \
anaconda/pkgs/python-3.5.2-0/lib/python3.5/lib-dynload/_tkinter.so

hth,
Scott

···

On Jan 17, 2017, at 01:09, Juan Nunez-Iglesias <jni.soma at gmail.com> wrote:

Hmm, installing ActiveTCL didn't help when using Anaconda Python. Which makes sense, but it was worth a shot. =)

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 :confused:
>
> 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
> Matplotlib-users Info Page

--
Ryan May