title: How to update image in tkinter label?
body: <p>I'm a beginner in python so this may be too simple question to ask but i need help..With this code i cannot update image in tkinter label. I can even resize window according to new loaded image's attributes but the new image is not displayed in tkinter label.</p>
  
  <pre><code>from Tkinter import Frame, Tk, Label, Text, Menu, END, BOTH, StringVar
  from PIL import ImageTk, Image
  import numpy
  import tkFileDialog
  
  class DIP(Frame):
      def __init__(self, parent):
          Frame.__init__(self, parent) 
          self.parent = parent        
          self.initUI()
  
  def initUI(self):
  
      self.parent.title("DIP Algorithms- Simple Photo Editor")
      self.pack(fill=BOTH, expand=1)
  
      menubar = Menu(self.parent)
      self.parent.config(menu=menubar)
  
      #Open Image Menu
      fileMenu = Menu(menubar)
      fileMenu.add_command(label="Open", command=self.onOpen)
      menubar.add_cascade(label="File", menu=fileMenu)
  
      #menu for image ngative
      basicMenu=Menu(menubar)
      basicMenu.add_command(label="Negative", command=self.onNeg)
      menubar.add_cascade(label="Basic", menu=basicMenu)
  
  #Image Negative Menu callback
  def onNeg(self):
      I2=255-self.I;
      im = Image.fromarray(numpy.uint8(I2))
      photo2=ImageTk.PhotoImage(im)
      self.label2= Label(self.parent,border=25,image=photo2)
      self.label2.image = photo2 # keep a reference!
      self.label2.grid(row=1, column=2)
  
  
  def setImage(self):
  
      self.img=Image.open(self.fn)
      self.I = numpy.asarray(self.img)
      l,h = self.img.size
      text=str(2*l+100)+"x"+str(h+50)+"+0+0"
      self.parent.geometry(text)
      photo = ImageTk.PhotoImage(self.img)
      self.label1 = Label(self.parent,border=25,image=photo)
      self.label1.configure(image=photo)
      self.label1.image = photo # keep a reference!
      self.label1.grid(row=1, column=1)
  
  #Open Callback
  def onOpen(self):
  
      ftypes = [('Image Files', '*.tif *.jpg *.png')]
      dlg = tkFileDialog.Open(self, filetypes = ftypes)
      filename = dlg.show()
      self.fn=filename
      #print self.fn #prints filename with path here
      self.setImage()
  
  #def onError(self):
      #box.showerror("Error", "Could not open file")    
  
  def main():
  
      root = Tk()
      DIP(root)
      root.geometry("320x240")
      root.mainloop()  
  
  
  if __name__ == '__main__':
      main()
  </code></pre>
  
  <p>When i run this code, and open an image , it is displayed in label1. But when i open another image again, i' expecting it to be displayed in same label1, but it's not happening. I know the 2nd image is loaded because the window size resized accordingly, the only problem is that it's not being displayed and i cannot figure out why!. </p>