User interface 单击“后,按钮仍保持按下状态”;“好的”;或;取消“;在tk_消息框中
我正在使用User interface 单击“后,按钮仍保持按下状态”;“好的”;或;取消“;在tk_消息框中,user-interface,tcl,tk,tkmessagebox,User Interface,Tcl,Tk,Tkmessagebox,我正在使用tk_messageBox显示ok cancel弹出信息。按下某个按钮时会显示消息Run,但在弹出信息消息中单击ok或cancel后,Run按钮会保持按下状态(如所附图像所示),尽管已启用,但您可以正常再次单击该按钮。我想让它恢复正常,不是这样压的吗 问题在于,您在前台运行任务时没有处理UI更新,这是更新按钮外观所必需的。您可能应该将运行按钮配置为禁用(-state disabled),然后立即运行update,以使UI与内部状态同步(您将按钮状态设置为disabled,这样您就不会一
tk_messageBox
显示ok cancel
弹出信息。按下某个按钮时会显示消息Run
,但在弹出信息消息中单击ok
或cancel
后,Run
按钮会保持按下状态(如所附图像所示),尽管已启用,但您可以正常再次单击该按钮。我想让它恢复正常,不是这样压的吗
问题在于,您在前台运行任务时没有处理UI更新,这是更新按钮外观所必需的。您可能应该将运行按钮配置为禁用(
-state disabled
),然后立即运行update
,以使UI与内部状态同步(您将按钮状态设置为disabled,这样您就不会一次得到多个单击处理)。然后,任务完成后,将状态设置回正常状态
其实并不那么复杂,但如果你有一个助手程序,可能会容易得多,比如:
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