我正在使用tk_messageBox
弹出ok-cancel
信息消息。按下某个按钮时会出现该消息Run
,但在单击ok
或cancel
弹出信息消息后,该Run
按钮保持按下状态(如附图所示),尽管已启用,但您可以再次正常单击它。我希望它恢复正常而不是这样按?
问问题
89 次
1 回答
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
于 2016-03-02T09:58:48.130 回答