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