모든 윈도우가 닫힐 때까지 racket/gui
을 사용하는 라켓 프로그램이 실행됩니다. 이렇게하면 다음과 같은 프로그램을 쉽게 작성할 수 있습니다.`racket/gui` (`timer %`를 멈추기 위해)로 만든 창을 프로그램 적으로 닫습니다.
#lang racket/gui
(define window (new frame% [label "Hello"] [width 100] [height 100]))
(send window show #t)
이제 프로그램은 창을 닫을 때까지 계속 실행됩니다.
그러나 예를 들어 카운트 다운이 완료되면 창을 닫고 끝내는 카운트 다운이 필요한 경우와 같이 프로그래밍 방식으로 창을 닫는 것이 좋습니다.
지금까지 내가하지만 유일한 방법은 윈도우가 show
방법에 '가까운'말할 수 :
(send window show #f)
이 그러나에만 표시되는 창을 중지하지만, 실제로 창을 닫으하지 않습니다 . 일반적으로,이 충분하고 프로그램이 예처럼, 종료 : 타이머가 종료 될 때까지
#lang racket/gui
(define window (new frame% [label "hello"]))
(send window show #f)
그러나, 프로그램은 타이머가있는 경우, 그것은 종료하지 않습니다. on-close
창에서 콜백을 설정할 수 있지만 창이 실제로 닫히면 호출되며 show
은 숨겨진 경우가 아닙니다. 예를 들어,이 프로그램은 집착하지 않습니다
#lang racket/gui
(define window
(new (class frame%
(super-new [label "hello"])
(define timer
(new timer%
[interval 1000]
[notify-callback (λ x (displayln "ding"))]))
(define/augment (on-close)
(send timer stop)))))
(send window show #f)
그래서, 윈도우가 기능합니다 (show
를 통해) 숨기거나 프로그램 창을 닫습니다 때 알아낼 중 하나 방법이? 둘 다 맞지 않으면 타이머를 막기 위해 show
메서드를 덮어 쓰는 것이 좋습니다. 당신은 어쨌든 frame%
클래스를 서브 클래스 화되어 있기 때문에 윈도우가 닫힐 때마다