TCL:点击" x"按钮显示:在循环外调用break

时间:2017-09-08 03:44:08

标签: tcl

我想使用bgerror来显示错误信息,例如:

entry .e -textvariable name
button .b -text check -command [list CheckName]
grid .e
grid .b

proc CheckName {} {
   global name
   if {$name>0} {
       ....
   } else {
       bgerror "Please Input the name!"
   }
}

对于错误窗口,如果我单击"确定"按钮,没关系,但如果我点击" x"按钮,会显示另一条消息"在循环外调用休息",如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:3)

bgerror回调不仅仅是一个标准程序,因为它专门与事件循环交互。特别是,如果它给出break条件,则会触发排除任何排队错误。它还从errorInfo全局变量读取以获取当前堆栈跟踪。

以最接近您想要的方式使用它的最简单方法是将错误作为处理事件的结果注入事件循环。这是一种简单的方法:

after idle [list error "this is an error message"]