Я новичок в Матплотлибе.В последнее время я практикую это и надеюсь создать приложение, похожее на фигуру Matlab.Тем не менее, пара проблем возникла на ранней стадии.Вот мой измененный и упрощенный код (без ущерба для моих намерений):
import tkinter as tk
import matplotlib.backends.backend_tkagg as tkagg
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from matplotlib.figure import Figure
class AppWindow(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
tk.Tk.wm_title(self, 'Activity Labeling Tool')
app_window = tk.Frame(self)
app_window.grid(row = 0, column = 0, sticky = 'nsew')
# app_window.pack(side = 'top', fill = 'both', expand = True)
app_window.grid_rowconfigure(0, weight = 1)
app_window.grid_columnconfigure(0, weight = 1)
self.frames = {}
frame = MainPage(app_window, self)
self.frames[MainPage] = frame
frame.grid(row = 0, column = 0, sticky = "nsew")
self.show_frame(MainPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise() # raise the frame to the front
class MainPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
fig = Figure(figsize = (8, 4.5), dpi = 120)
ax = fig.add_subplot(111)
ax.plot([1,2,3,4,5,6,7,8,9],[2,1,1,1,1,1,1,1,2])
canvas = tkagg.FigureCanvasTkAgg(fig, self)
canvas.get_tk_widget().grid(row = 1, column = 0)
canvas.draw()
frame_toolbar = tk.Frame(self)
frame_toolbar.grid(row = 3, sticky = tk.W)
toolbar = tkagg.NavigationToolbar2Tk(canvas, frame_toolbar)
toolbar.update()
canvas._tkcanvas.grid(row = 1, column = 0)
def load_csv():
ax.clear() # Want to clear the fig, but not activated here
'''
load file
'''
btn_load_file = tk.Button(self, text = 'Load File', command = load_csv)
btn_load_file.grid(row = 0, column = 0)
app = AppWindow()
app.mainloop()
Мое намерение - очистить рисунок перед импортом файла CSV, чтобы обеспечить чистоту графика.Однако метод .clear()
не активируется должным образом при нажатии кнопки загрузки файла.
Я попытался передать ax
в функцию load_csv, все еще получая тот же результат.И я почти уверен, что .clear()
правильно работает вне def
.Я что-то упускаю в аспекте Matplotlib или даже Python?
Спасибо за просмотр моего вопроса.Любое предложение будет оценено.Еще раз спасибо!