Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 单击“后,按钮仍保持按下状态”;“好的”;或;取消“;在tk_消息框中_User Interface_Tcl_Tk_Tkmessagebox - Fatal编程技术网

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