This code is based on code from series of programs 'Thinking in tkinter'
This code is not perfect, especially it does not recognize key release when mouse moves out of button area during push. Leave event could also be captured for that to stop the event in that case.