Quand j'exécute le script suivant:
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()
Je reçois un avertissement:
MatplotlibDeprecationWarning: The NavigationToolbar2TkAgg class was
deprecated in version 2.2.
Pourquoi le NavigationToolbar2TkAg
est-il obsolète et que devrais-je utiliser à la place?
Quoi utiliser à la place?
Matplotlib veut maintenant que vous utilisiez
NavigationToolbar2Tk
au lieu de NavigationToolbar2TkAgg
.
Pourquoi est-ce obsolète?
La barre d’outils de navigation est indépendante du moteur de rendu. Par exemple. Le rendu Agg ainsi que le rendu cairo peuvent utiliser la même barre d'outils de navigation. Il est donc logique de le fournir sous un nom qui ne contient pas le nom du rendu ("Agg").
Je crois que cela signifie qu'il a été arrêté d'être mis à jour donc peut-être instable. Je l'utilise dans mon projet actuel, l'erreur indique toujours, mais la barre d'outils fonctionne bien.