title: Tkinter Canvas Update Memory Leak
body: <p>I'm seeing a memory leak in the code below. I'm creating and processing my data in separate modules, but this isn't causing the leak from what I can see. I believe it's because I am calling a new instance of drawing class each time I change my scale, although I'm not sure how to correct this issue. I've read <a href="https://stackoverflow.com/q/8468198">this thread</a>, but when I try and implement <code>self.canvas.destroy()</code> method on my code I receive an error. I was wondering what method could be applied to the code below to solve my issue?</p>
  
  <p><strong>Code Snippet:</strong></p>
  
  <pre><code>from Tkinter import *
  
  class Interface_On:
  
      def Interface_Elements(self, master):
          self.master=master
          self.master.title( "My Canvas")
          self.c=Canvas(self.master, width=1000, height=1000, bg='black')
          self.c.grid(row=0, column=0)
          menubar = Menu(master)
          filemenu = Menu(menubar, tearoff=0)
          filemenu.add_command(label="New", command=self.Edit_New)
          menubar.add_cascade(label="File", menu=filemenu)
          master.config(menu=menubar)
          drawing_utility_run=Drawing_Utility()
          drawing_utility_run.drawer(self.c)
  
      def Edit_New(self): 
          Export_Poscar = self.Export_Poscar = Toplevel(self.master)
          self.Export_Poscar.title('New Ribbon...')
          self.Export_Poscar.geometry('300x400')
          self.scale_Label= Label(Export_Poscar, width=15, text='scale:')
          self.scale_Label.grid(row=2, column=0)
          self.scale_Label= Label(Export_Poscar, width=15, text='scale:')
          scale_var = StringVar()
          self.scale_Spin= Spinbox(Export_Poscar, from_=1, to=1000, increment=1, width=15, command=self.execute_request_immediate, textvariable=scale_var)
          self.scale_Spin.grid(row=2, column=2)
  
      def execute_request_immediate(self):
          global scale
          User_Set_Scale=float(self.scale_Spin.get())
          scale=User_Set_Scale
          drawing_utility_run=Drawing_Utility()
          drawing_utility_run.drawer(self.c)
  
  class Drawing_Utility:
      def drawer(self, canvas):
          self.canvas=canvas
          self.canvas.delete('all')
          import Generator #generates my data (imports 'scale' from above where possible)
          Generator_run=Generator.Generator()
          Generator_run.generator_go()        
          from Generator import coordinates_x_comp, coordinates_y_comp #imports necessary lists
          import Processor #Imports coordinates_x_comp, coordinates_y_comp, cleans and analyses
          Process_xy_Data=Processor.Data_Processor()
          Process_xy_Data.Process_Data()
          from Processor import p_1, p_2
          for Line in xrange(len(p_1)):
              self.canvas.create_line(p_1[Line],p_2[Line], fill='red', activefill='blue', width=1)
  
  root=Tk()
  run_it_canvas=Interface_On()
  run_it_canvas.Interface_Elements(root)
  root.mainloop()
  </code></pre>