Изменение изображения кнопки при нажатии в Racket - PullRequest
0 голосов
/ 04 ноября 2018

То, как я его сейчас настроил, делает так, чтобы при нажатии кнопки менялись изображения. Но изображение кнопки остается измененным после нажатия. Как мне вернуть его к исходному изображению, как только я отпущу левый щелчок?

(define spin-img
    (read-bitmap "slot_machine/Bare Bones Slot Machine Frame/spin.png"))

(define spin-pressed-img
    (read-bitmap "slot_machine/Bare Bones Slot Machine Frame/spin_pressed.png"))

(define spin-button
    (new button% [parent panel] [label spin-img]
    [callback (lambda (button event)
        (send spin-button set-label spin-img-pressed)])) 

1 Ответ

0 голосов
/ 05 ноября 2018

Быстрый эксперимент, см. Код ниже, показывает, что вы не получаете событие кнопки, когда вы нажимаете на кнопку левой кнопкой мыши - вы получаете событие, когда вы отпускаете мышь.

Попробуйте нажать кнопку и обратите внимание, что и когда распечатывается событие. Также попробуйте нажать кнопку, переместить курсор за пределы кнопки и отпустить.

#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)

Если вы хотите, чтобы изображение, которое можно было кликать, менялось, может быть, вам подойдет небольшой холст? Холст может дать вам событие как при наведении мыши, так и вверх.

...