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?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With