Быстрый эксперимент, см. Код ниже, показывает, что вы не получаете событие кнопки, когда вы нажимаете на кнопку левой кнопкой мыши - вы получаете событие, когда вы отпускаете мышь.
Попробуйте нажать кнопку и обратите внимание, что и когда распечатывается событие.
Также попробуйте нажать кнопку, переместить курсор за пределы кнопки и отпустить.
#lang racket
(require racket/gui)
(define frame (new frame% [label "Example"]))
(define msg (new message% [parent frame]
[label "No events so far..."]))
(new button% [parent frame]
[label "Click Me"]
[callback (lambda (button event)
(displayln (list (send event get-event-type)
(send event get-time-stamp)))
(send msg set-label "Button click"))])
(send frame show #t)
Если вы хотите, чтобы изображение, которое можно было кликать, менялось, может быть, вам подойдет небольшой холст?
Холст может дать вам событие как при наведении мыши, так и вверх.