#lang racket/gui
(define frame (new frame%
[label "test"]
[width 200]
[height 200]))
(define mb (new menu-bar% [parent frame]))
(let ([m (new menu%
[parent mb]
[label "&About"])])
(new menu-item%
[parent m]
[label "&About"]
[callback (lambda (b e) (message-box "About" "This is a test." frame))])
)
(send frame show #t)
(p.s消息框可以弹出一个对话框 - 与(new dialog% [parent frame])
相同)
因此,如果我们忽略第一个问题,我们是否可以显示禁用父菜单栏的模态对话框?
此外,是否真的不可能在racket / gui中创建一个真实的模态对话框?
(我正在研究Win7)
答案 0 :(得分:2)
我认为你不想使用frame%
,而是想在这里使用dialog%
课程。我不确定你是否可以轻松制作一个有菜单栏的模态对话框。
哦,还要记住,dialog%
只是其事件空间的模态。因此,如果您从DrRacket运行创建对话框的代码片段,则DrRacket本身仍然可以访问。
答案 1 :(得分:2)
跟进:这是一个错误,将被修复。
参考文献:
答案 2 :(得分:0)
这看起来有点像hackish,但你可以自己使用[callback (lambda (b e) (send mb enable #f) (message-box "About" "This is a test.") (send mb enable #t))]
或者如果涉及延续,可以使用dynamic-wind
,在你的例子中它们不是。