2017-04-23 15 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]はボタンが無効になることを理解し、そのshowメソッド

(send frame show #t) 

を呼び出すことにより、フレームを表示しますボタンをクリックした後のボタン。コールバックはボタンがクリックされたときに発生するため、この問題を解決する方法がわからないため、コールバック内にトリックがあると思います。コードは非常に高く評価されるでしょう!

+0

回答を受け入れることを忘れないでください。 – soegaard

答えて

1

あなたは、ウィンドウ無効にするには、次のmethodを使用することができますので、

(send a-window enable enable?) 

を、あなたのケースでは、コールバックは次のようになります。

(send button enable #f) 

たとえば、新しいボタンを変更する:

(new button% [parent frame] 
      [label "Click Me"] 
      [callback (lambda (button event) 
         (send msg set-label "Button click") 
         (send button enable #f))]) 

は、ユーザーがクリックするとボタンを無効にします。

関連する問題