单击"确定"按钮保持按下状态。或者"取消"在tk_messagebox

时间:2016-03-02 09:32:10

标签: user-interface tcl tk tkmessagebox

我正在使用tk_messageBox获取ok-cancel弹出式信息消息。按下某个按钮Run时会显示该消息,但在弹出的信息消息中点击okcancel后,按下Run按钮(如图所示)虽然已启用,但您可以正常再次点击它。我想让它恢复正常而不是按这种方式?

depressed button

1 个答案:

答案 0 :(得分:1)

问题是您在前台运行任务而不处理UI更新,这是更新按钮的外观所必需的。您可能应该将“运行”按钮配置为禁用(-state disabled)并立即运行update以使UI与内部状态同步(您将按钮状态设置为禁用,以便您不能立即获得多次点击处理)。然后,一旦任务完成,您将状态设置恢复正​​常。

它并不是那么复杂,但是如果你有一个帮助程序会更容易,也许是这样:

proc doProcessing {} {
    .runButton configure -state disabled
    update
    doTheLongProcessing
    .runButton configure -state normal
}

button .runButton -text Run -command {
    if {[tk_messageBox -type okcancel -message "is it ok?"] eq "ok"} {
        doProcessing
    }
}
pack .runButton