如何使用drracket中的按钮关闭画布(其中包含按钮)?

如何使用drracket中的按钮关闭画布(其中包含按钮)?,racket,Racket,我已经试过了。 我找不到要写什么来代替括号中的空格。 我希望这不是家庭作业 (define frame (new frame% [label "game"] [width 500] [height 500] [alignment '(center center)])) (new button% [parent frame] [label "exit"] ; Callback procedure for a button clic

我已经试过了。 我找不到要写什么来代替括号中的空格。


我希望这不是家庭作业

 (define frame (new frame% [label "game"]
               [width 500] [height 500] [alignment '(center center)]))
(new button% [parent frame]
         [label "exit"]
         ; Callback procedure for a button click:
          [callback (    )])
因为您已经定义了框架,所以只需在按钮的回调中引用它即可

您甚至可以更进一步,创建一个单独的过程,并将该过程作为回调传递,如下所示:

#lang racket/gui
(define frame (new frame% [label "game"]
               [width 500] [height 500] [alignment '(center center)]))
(new button% [parent frame]
         [label "exit"]
         ; Callback procedure for a button click:
          [callback (lambda (d e) (send frame show #f))])
因为这将允许您在回调期间发生其他事情。另外,我个人喜欢创建这样一个单独的回调函数,因为我认为它使代码更易于阅读

#lang racket/gui
(define frame (new frame% [label "game"]
               [width 500] [height 500] [alignment '(center center)]))

(define thecallback
  (lambda (b e)
    (send frame show #f)))

(new button% [parent frame]
         [label "exit"]
         ; Callback procedure for a button click:
          [callback thecallback])