在球拍中按下按钮时更改按钮的图像

时间:2018-11-04 20:07:37

标签: user-interface racket

我现在设置它的方式使其可以使用,以便在单击按钮时交换图像。但是按钮图像在单击后仍保持交换状态。放开左键后如何将其恢复为原始图像?

(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 :(得分:0)

快速实验(请参见下面的代码)显示,左键单击按钮时未收到按钮事件-释放鼠标时会收到事件。

尝试单击按钮,然后注意打印事件的时间和内容。 也可以尝试单击按钮,将光标移到按钮外然后释放。

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

如果您希望更改可点击的图像,也许可以使用小画布解决? 画布可以在您按下鼠标和按下鼠标时为您提供事件。