2017-04-23 4 views
1

사용자가 라켓에서 버튼을 클릭 한 후 버튼을 비활성화하는 방법을 파악하는 데 문제가 있습니다. 여기 사용자가 라켓에서 클릭 한 후 버튼을 비활성화하는 방법은 무엇입니까?

무엇 메신저 일에 대한 설명과 일부 샘플 코드 :

(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 procedure for a button click: 
    [callback (lambda (button event) 
       (send msg set-label "Button click") 
       )]) 

나는 또한 내가 현장에 넣어 경우 [enabled #f] 버튼이 비활성화됩니다 이해

(send frame show #t) 

의 표시 방법 호출하여 프레임을 표시하지만 난 심지어 그것을 클릭하기 전에 버튼을 비활성화하고 나는 그것을 사용하지 않을 버튼을 클릭하면 버튼이 표시됩니다. 단추를 클릭 할 때 콜백이 발생하지만이 문제를 해결하는 방법을 모르기 때문에 콜백 내에 속임수가 있다고 생각합니다. 코드 크게 감사하겠습니다!

+0

답변을 수락하는 것을 잊지 마십시오. – soegaard

답변

1

당신은 창을 해제하려면 다음 method를 사용할 수 있습니다

(new button% [parent frame] 
      [label "Click Me"] 
      [callback (lambda (button event) 
         (send msg set-label "Button click") 
         (send button enable #f))]) 
: 새로운 버튼을 수정, 예를 들어

(send button enable #f) 

:

(send a-window enable enable?) 

따라서, 귀하의 경우, 콜백된다을

은 사용자가 클릭 할 때 버튼을 사용 중지합니다.

관련 문제