按照下面代码,第一次可以正确的显示在GUI窗口上,第二次的时候就会第一次显示的重复显示出来。
用什么方法在第二次显示的时候把第一次现实的图删除掉?
def Addlift(self):
# secondwindow.destroy() #第二界面消失!!!尚未解决!!!望指点
# 添加panedframe和frame,使得窗口上有三个区域,且能够左右、上下拉伸。
pw_th = PanedWindow(root, orient='vertical',
sashrelief='sunken') # (放在哪,其子控件竖直放置[pw_th_top和bottom上下放],分割线样式为sunken)
pw_th.pack(fill='both', expand=2) # 放置,填充整个窗口,可拉伸。
pw_th_top = PanedWindow(pw_th, orient='horizontal',
sashrelief='sunken') # (放pw_th里,其子控件水平放置[fm_th_left和right左右放])
pw_th_bottom = PanedWindow(pw_th, orient='horizontal',
sashrelief='sunken') # (放pw_th里,其子控件水平放置[fm_th_bottom左右放])
self.fm_th_left = Frame(pw_th_top, relief='sunken', bg='#FFFFF0') # 添加左右下3个frame
self.fm_th_right = Frame(pw_th_top, width=400, height=420, relief='sunken', bg='#FFFFF0')
self.fm_th_bottom = Frame(pw_th_bottom, relief='sunken')
# 将所有的panedframe和frame加到相应项里
pw_th.add(pw_th_top), pw_th.add(pw_th_bottom), pw_th_top.add(self.fm_th_left)
pw_th_top.add(self.fm_th_right), pw_th_bottom.add(self.fm_th_bottom)
def create_form(self, figure):
# 把绘制的图形显示到tkinter窗口上
self.canvas = FigureCanvasTkAgg(figure, self.fm_th_right)
self.canvas.draw() # 以前的版本使用show()方法,matplotlib 2.2之后不再推荐show()用draw代替,但是用show不会报错,会显示警告
self.canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)
# 把matplotlib绘制图形的导航工具栏显示到tkinter窗口上
self.toolbar = NavigationToolbar2Tk(self.canvas,
self.fm_th_right) # matplotlib 2.2版本之后推荐使用NavigationToolbar2Tk,若使用NavigationToolbar2TkAgg会警告
self.toolbar.update()
self.canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=1)
def clear(self):
self.canvas.get_tk_widget().destroy()
self.toolbar.destroy()
self.canvas._tkcanvas.destroy()
figure = self.plot(Y_test, y_testpre) # 返回matplotlib所画图形的figure对象
self.create_form(figure) # 将figure显示在tkinter窗体上面