Traceback (most recent call last):
File "D:\xxx\test\closefigureserror.py", line 19, in <module>
plt.show()
File "c:\***\lib\site-packages\matplotlib\pyplot.py", line 253, in show
return _show(*args, **kw)
File "c:\***\lib\site-packages\matplotlib\backend_bases.py", line 208, in show
cls.mainloop()
File "c:\***\lib\site-packages\matplotlib\backends\_backend_tk.py", line 1073, in mainloop
Tk.mainloop()
File "c:\***\lib\lib-tk\Tkinter.py", line 414, in mainloop
_default_root.tk.mainloop(n)
AttributeError: 'NoneType' object has no attribute 'tk'
in py3 (master):
Traceback (most recent call last):
File "D:\xxx\test\closefigureserror.py", line 19, in <module>
plt.show()
File "d:\***\matplotlib\lib\matplotlib\pyplot.py", line 254, in show
return _show(*args, **kw)
File "d:\***\matplotlib\lib\matplotlib\backend_bases.py", line 3275, in show
cls.mainloop()
File "d:\***\matplotlib\lib\matplotlib\backends\_backend_tk.py", line 1040, in mainloop
Tk.mainloop()
File "D:\***\Miniconda3\envs\mplgit\lib\tkinter\__init__.py", line 557, in mainloop
_default_root.tk.mainloop(n)
AttributeError: 'NoneType' object has no attribute 'tk'
The code works fine in Qt4Agg (with py2) or Qt5Agg (with py3)
Activity
anntzer commented on Nov 1, 2018
This can be repro'd without mpl:
I guess the correct fix is to call mainloop() on the first Tk() that's still alive...
anntzer commented on Nov 1, 2018
Looks like
diff --git i/lib/matplotlib/backends/_backend_tk.py w/lib/matplotlib/backends/_backend_tk.py index a11e65409..c88ad48b4 100644 --- i/lib/matplotlib/backends/_backend_tk.py +++ w/lib/matplotlib/backends/_backend_tk.py @@ -1037,4 +1037,6 @@ class _BackendTk(_Backend): @staticmethod def mainloop(): - tk.mainloop() + managers = Gcf.get_all_fig_managers() + if managers: + managers[0].window.mainloop()fixes the problem.
If that works for you, can to make a PR out of it?