What to use instead of NavigationToolbar2TkAgg?

房东的猫 提交于 2019-12-01 02:07:43

问题


When I run the following script:

import tkinter as tk
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.figure
import matplotlib.backends.backend_tkagg
import numpy as np

def on_key_event(event, canvas, toolbar):
    matplotlib.backend_bases.key_press_handler(event, canvas, toolbar)

matplotlib.use('TkAgg')
root = tk.Tk()
root.wm_title('Test window')
fig = matplotlib.figure.Figure(figsize=(9.333, 7), dpi=100)
a = fig.add_subplot(111)
axes = fig.gca()
x = np.linspace(0, 2*np.pi, 100)
axes.plot(x, np.sin(x), marker='.')
axes.set_title('sin(x)')
axes.grid()
canvas = matplotlib.backends.backend_tkagg.FigureCanvasTkAgg(fig, master=root)
canvas.draw()
canvas.get_tk_widget().pack(fill=tk.X, expand=1)
canvas.mpl_connect(
    'key_press_event',
    lambda event: on_key_event(event, canvas, toolbar)
)
toolbar = matplotlib.backends.backend_tkagg.NavigationToolbar2TkAgg(
    canvas, root
)
toolbar.update()
root.bind('<Control-w>', lambda event: root.destroy())
tk.mainloop()

I get a warning:

MatplotlibDeprecationWarning: The NavigationToolbar2TkAgg class was
deprecated in version 2.2.

Why is the NavigationToolbar2TkAg deprecated and what should I use instead?


回答1:


What to use instead?

Matplotlib now wants you to use

NavigationToolbar2Tk

instead of NavigationToolbar2TkAgg.

Why is it deprecated?

The Navigation toolbar is independent of the renderer. E.g. both the Agg renderer as well as the cairo renderer can use the same navigation toolbar. Hence it makes sense to provide it under a name that does not have the renderer's name ("Agg") in it.




回答2:


I beleive this means it was stopped being updated therefore may be unstable. I use it in my current project, the error always shows but the toolbar works fine.



来源:https://stackoverflow.com/questions/50330320/what-to-use-instead-of-navigationtoolbar2tkagg

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!