2017-04-13 99 views
0

我想下面的代码拿起上/下/左/右按键,修改对http://docs.racket-lang.org/gui/windowing-overview.html入门钥匙从钥匙事件按下球拍

(define fr (new frame% [label "Testing"] [width 300] [height 300])) 
(define msg (new message% [parent fr] [label ""])) 

(define my-canvas% 
    (class canvas% 
    (define/override (on-char key-event) 
     (cond 
     [(equal? key-event 'up) (send msg set-label "UP")] 
     [(equal? key-event 'down) (send msg set-label "DOWN")] 
     [(equal? key-event 'left) (send msg set-label "LEFT")] 
     [(equal? key-event 'right) (send msg set-label "RIGHT")] 
     [else (send msg set-label "Others")])) 
    (super-new))) 

(new my-canvas% [parent fr] 
    [paint-callback 
     (lambda (canvas dc) 
     (send dc draw-ellipse 140 120 20 20))]) 

(send fr show #t) 

的关键事件代码从http://docs.racket-lang.org/gui/key-event_.html?q=event

所采取的示例

但是,上/下/右/左键未正确识别,只有“其他”显示在消息中。问题在哪里,如何纠正。

回答

0
  1. (equal? key-event <key-code>)替换为(equal? (send key-event get-key-code) <key-code>)
  2. [stretchable-width #t]添加到msg的初始化参数列表中,否则您将无法看到输出。