多次点击阻止Tcl / Tk按钮

时间:2014-02-07 16:39:10

标签: tcl tk

我需要一个类似于tcl / tk 8.6下的“tk busy”的功能,它只接受按钮上的第一次点击,并忽略进一步的点击,直到执行被调用的命令结束。 不幸的是,我必须使用8.5.9 ...

我已经尝试绑定自定义proc single_invoke,它在我调用的proc中查看设置为1的全局变量。这显然不是因为事件排队,所以在我的proc返回后调用第二次点击(并将全局设置回0 ...)

更新(按照答案中的解决方案)

proc on_button_click {} {
  grab .lExistingLabel
  #lengthy code
  update;  #to release any queued events
  grab release .lExistingLabel
}

谢谢!

1 个答案:

答案 0 :(得分:2)

创建一个几乎不可见的小部件 - 例如一个1x1的框架 - 并将其放置在不显眼的位置,就像应用程序的一角。点击按钮后,抓取该小部件。抓取会将所有事件汇集到该窗口小部件,直到您释放抓取。