用户在Racket中点击按钮后如何禁用按钮?

时间:2017-04-23 07:07:48

标签: user-interface button racket

我在用户在Racket中点击按钮后,无法弄清楚如何禁用该按钮。

以下是一些示例代码,解释了我在做什么:

通过实例化框架%class

来制作框架
(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]如果我把它放在字段中会禁用按钮,但是在我点击它之前它会禁用按钮,我希望它在我点击按钮后禁用按钮。我认为诀窍在于回调,因为单击按钮时会发生回调,但我不知道如何解决此问题。代码将不胜感激!

1 个答案:

答案 0 :(得分: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))])

会在用户点击时禁用该按钮。

相关问题