1

我正在使用tk_messageBox弹出ok-cancel信息消息。按下某个按钮时会出现该消息Run,但在单击okcancel弹出信息消息后,该Run按钮保持按下状态(如附图所示),尽管已启用,但您可以再次正常单击它。我希望它恢复正常而不是这样按?

按下按钮

4

1 回答 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 回答