在下面的Rebol 2代码中,为什么按钮a
在点击后5秒钟可见,而在点击按钮b
后5秒仍然隐藏?
f: does [hide a wait 5]
view layout [
a: button "a" [f]
b: button "b" [f]
]
答案 0 :(得分:2)
它看起来像一个
的错误view layout [
a: button "hide me" [ hide face ]
b: button "hide a" [ hide a ]
]
不会隐藏" a"除非从另一个按钮调用隐藏,否则按钮。您的等待5 必须触发布局更新,以便按钮消失。
使用执行事件(等待[])而不是等待5 ,而不会隐藏按钮。
view layout [
a: button "hide me" [ hide face do-events ]
b: button "hide a" [ hide a ]
]
答案 1 :(得分:1)
单击每个按钮时,它会重新绘制为“按下”,并保持“按下”直到其action
完成。然后,在action
完成后,该按钮将重新绘制为“未按下”。
在按钮a
' action
期间,它被隐藏,但当action
完成后,当它处于“未按下”状态时会再次显示绘制。根据{{3}},hide
仅“暂时从视图中删除脸部”,并且“下次直接或间接通过其中一个父脸部显示脸部时,脸部将再次可见”。
在按钮b
&{39} action
期间,按钮a
被隐藏,但按钮b
' s action
完成后,按钮b
被重新绘制为“未压缩”。此时,按钮a
未被触及并保持隐藏状态。
考虑到Graham Chiu的代码:
view layout [
a: button "hide me" [ hide face do-events ]
b: button "hide a" [ hide a ]
]
在这种情况下,按钮a
在点击后仍然隐藏的原因是它的action
在窗口关闭之前无法完成。如果wait 5
表示单击按钮时需要执行的代码,则需要将其放在do-events
之前。否则在窗口关闭之前不会执行。
view layout [
a: button "hide me and print" [
hide face
print "I need to say this when clicked."
do-events
print "I can wait until the window is closed."
]
b: button "hide a" [ hide a ]
]
可以在this function summary of hide下的小标题下找到隐藏自身按钮的其他一些方法:“隐藏自我”。例如:
view l: layout [b: button [b/show?: false unview/all view l]]