title: Tkinter's Widget's built in Virtual Events do not bind
body: <p>I can't seem to get tkinter's built in widget virtual events to work.<br />
  It seems that <code>command = </code> works, however I cannot use it because it doesn't return the tkinter event parameters to the callback function.  I need the tkinter event parameter to be returned to the callback so I can get the calling widget's instance.</p>
  <p>Am I doing something wrong for <code>'&lt;&lt;ComboboxSelected&gt;&gt;'</code>, <code>'&lt;&lt;Increment&gt;&gt;'</code>, <code>'&lt;&lt;Decrement&gt;&gt;'</code> to do nothing?</p>
  <p>I need the callback to be called and the event to be passed so that I can get the widget instance.  I also cannot use lambda (as all of the similar examples suggest) to return the index number as I need to access the widget directly to get its current row number as I intend on deleting rows.  If I use lambda it makes a mess of things as the index is fixed.  So if I click on row 5 and delete row 5, row 6 becomes row 5 and if I want to delete it deletes row 6 instead.</p>
  <p>I was also hoping that there was a virtual event for the button to perform the same effect as command.  So if you tab to the button hit spacebar or click on it, but I can't find any such virtual event.  Is there something like this?</p>
  <pre><code>from tkinter import *
  
  root = Tk()
  
  omuVars = []
  omuList = ['Bahamas','Canada', 'Cuba','United States']
  
  omu = []
  spb = []
  cmd = []
  
  def callSelectChanged(event):
      caller = event.widget
      rowNumber = caller.grid_info()['row']
      print(rowNumber)
  
  def callIncrement(event):
      caller = event.widget
      rowNumber = caller.grid_info()['row']
      print(rowNumber)
  
  def callDecrement(event):
      caller = event.widget
      rowNumber = caller.grid_info()['row']
      print(rowNumber)
  
  def callButton(event):
      caller = event.widget
      rowNumber = caller.grid_info()['row']
      print(rowNumber)
  
  for i in range(0,10):
      omuVars.append(StringVar())
      omu.append(OptionMenu(root,
                            omuVars[i],
                            *omuList))
      omu[i].bind('&lt;&lt;ComboboxSelected&gt;&gt;', callSelectChanged)
      omu[i].config(font='Terminal 18 bold', anchor=W, fg='blue', relief=FLAT, bg='SystemWindow', borderwidth=0, width=15)
      omu[i].grid(row=i, column=0)
  
      spb.append(Spinbox(root,
                         from_=00,
                         to=23,
                         wrap=True,
                         width=2,
                         font='Terminal 18 bold',
                         fg='blue',
                         format=&quot;%02.0f&quot;,
                         relief=FLAT))
      spb[i].bind('&lt;&lt;Increment&gt;&gt;', callIncrement)
      spb[i].bind('&lt;&lt;Decrement&gt;&gt;', callDecrement)
      spb[i].grid(row=i, column=1)
  
      cmd.append(Button(root,
                        text='\u2718',
                        font='Terminal 16 bold',
                        fg='blue',
                        width=2))
      cmd[i].bind('&lt;Button-1&gt;',callButton)
      cmd[i].bind('&lt;space&gt;', callButton)
      cmd[i].grid(row=i, column=2)
  
  
  root.mainloop()
  </code></pre>