title: Tkinter. Create multiple buttons with "different" command function
body: <p>first of all, sorry for the title, I couldn't find a better one.</p>
  
  <p>The following code is a minimalized version of a problem I have in my Python program (I am a newbie btw.).</p>
  
  <pre><code>def onClick(i):
      print "This is Button: " + str(i)
      return
  
  def start():
      b = [0 for x in range(5)]
      win = Tkinter.Tk()
      for i in range(5):
          b[i] = Tkinter.Button(win,height=10,width=100,command=lambda : onClick(i))
          b[i].pack()
      return
  </code></pre>
  
  <p>What it does:
  Whatever Button I click, it says "This is Button: 4".</p>
  
  <p>What I want:
  First button should say "This is Button: 0" and so on.</p>
  
  <p>Is this a wanted behaviour of Python? And if the answer is yes, why is that so? How can I fix it?</p>
  
  <p>On the other hand, this works fine:</p>
  
  <pre><code>def start():        
      x = [0 for x in range(5)]
      for i in range(5):
          x[i] = lambda:onClick(i)
          x[i]()
      return
  </code></pre>