为什么按钮隐藏自己和另一个不同?

时间:2015-08-28 05:09:27

标签: rebol rebol2

在下面的Rebol 2代码中,为什么按钮a在点击后5秒钟可见,而在点击按钮b后5秒仍然隐藏?

f: does [hide a wait 5]

view layout [
    a: button "a" [f]
    b: button "b" [f]
]

2 个答案:

答案 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]]