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