Я застрял в решении этой проблемы. У меня есть кнопка анализа, которая вызывает функцию, которая создает сложный граф с помощью matplotlib и помещает его в фрейм на моем tkinter GUI как FigureCanvasTkAgg. В GUI пользователь должен иметь возможность снова нажать анализ и снова запустить анализ, а существующие рисунок и панель инструментов должны быть заменены новыми. С моим кодом панели инструментов накапливаются при каждом новом нажатии кнопки, и цифры также начинают складываться.
root = tk.ThemedTk()
analyse_button.place(x=70, y=350, anchor='w', height=30, width=210)
def analysis()
...
f = Figure(figsize=(8, 5), dpi=125)
a = f.add_subplot(111)
graph = nx.Graph()
...
frm = Frame(root, width=700, height=500)
frm.place(x=240, y=420, anchor='w')
canvas = FigureCanvasTkAgg(f, master=frm)
canvas.draw()
canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)
toolbar = NavigationToolbar2Tk(canvas, root)
toolbar.configure(bg="white")
toolbar.update()
canvas._tkcanvas.pack()
...
root.mainloop()
Я пытался проверить, существуют ли уже frm
и toolbar
, чтобы уничтожить их, если они это сделают, до создания новых.
if frm.winfo_exists():
if toolbar.winfo_exists():
frm.destroy()
toolbar.destroy()
Это, конечно, дает мне ошибку, что frm
и toolbar
не определены.
Любые предложения о том, как подойти к этому?