我需要一个类似于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
}
谢谢!
答案 0 :(得分:2)
创建一个几乎不可见的小部件 - 例如一个1x1的框架 - 并将其放置在不显眼的位置,就像应用程序的一角。点击按钮后,抓取该小部件。抓取会将所有事件汇集到该窗口小部件,直到您释放抓取。