我正在尝试找到一种通过更新数据来更新嵌入在tkinter窗口类中的matplotlib图像图的方法。单击按钮即可修改数据,并使用numpy数组进行存储/操作。
我未能成功删除类实例,但能够嵌入静态图。
我尝试了lucky_pack(),del命令,但没有成功
import tkinter
from random import randint
import matplotlib as plt
import numpy as np
from matplotlib.backends.backend_tkagg import (
FigureCanvasTkAgg,NavigationToolbar2Tk)
# Implement the default Matplotlib key bindings.
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure
root = tkinter.Tk()
root.wm_title("Embedding in Tk")
#create figure
fig = Figure(figsize=(5,4),dpi=100)
ax = fig.add_axes([0,1,1])
ax.imshow(np.array([[0,10],[23,40]]))
#plt.rcParams["keymap.grid"] = ""
#create canvas with figure
canvas = FigureCanvasTkAgg(fig,master=root) # A tk.DrawingArea.
canvas.get_tk_widget().pack(side=tkinter.TOP,fill=tkinter.BOTH,expand=1)
def on_key_press(event):
#if event.key == 'x':
ax.imshow(np.array([[randint(0,30),randint(0,30)],[randint(0,30)]]))
key_press_handler(event,canvas) # toolbar)
print("you pressed {}".format(event.key))
#connect canvas to event function
canvas.mpl_connect("key_press_event",on_key_press)
def _quit():
root.quit() # stops mainloop
root.destroy() # this is necessary on Windows to prevent
# Fatal Python Error: PyEval_RestoreThread: NULL tstate
button = tkinter.Button(master=root,text="Quit",command=_quit)
button.pack(side=tkinter.BOTTOM)
tkinter.mainloop()
多个图形出现在窗口中,而不是更新为同一图形