2017-04-23 72 views
1

我很难搞清楚如何在用户点击球拍后禁用按钮。如何在用户点击球拍后禁用按钮?

下面是对解释一些示例代码什么IM做:

通过实例化框架%级做一个框架

(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") 
       )]) 

显示通过调用其show方法

(send frame show #t) 

我也明白,[enabled #f]将禁用按钮,如果我把它在该领域的框架,但它会禁用按钮之前,我甚至点击它,我希望它禁用点击按钮后按钮。我认为窍门在于回调,因为回调发生在按钮被点击时,但我不知道如何解决这个问题。代码将不胜感激!

+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))]) 

将在用户单击时禁用按钮。