我的应用程序有一个绑定到鼠标按钮的命令。我已经意识到,当您单击一个窗口来设置焦点并执行按钮命令时,这很烦人。
这是将我的命令绑定到按钮1的行:
bind .f.canvas <Button-1> {panto %W %x %y 0.5}; # pan half distance
当同时按下按钮来设置焦点时,如何禁止按钮命令的调用?
这是我的“测试顺序”:
答案 0 :(得分:0)
如果使绑定脚本以break
结尾,它将不会运行与该事件关联的任何其他脚本(例如,在小部件类级别,整个窗口级别或整个应用程序级别) )。具体来说,您可以这样做:
bind .f.canvas <Button-1> {
panto %W %x %y 0.5; # pan half distance
break
}
这种事情是推荐使用多命令绑定脚本的少数情况之一。通常,(为了易于理解)最好将内容提取到过程中,但在这种情况下,最好直接将break
放入
答案 1 :(得分:0)
我当前的解决方案有点破烂。我背负着输入小部件上的键盘焦点事件,在输入未聚焦时暂时禁用了按钮命令:
ttk::entry .f.cmd -textvar e -width 30
bind .f.cmd <FocusOut> {
puts "focus out, disable button press";
bind .f.canvas <Button-1> {}
}
bind .f.cmd <FocusIn> {
puts "focus in, enable button press starting next event";
after idle {
bind .f.canvas <Button-1> {
panto %%W %%x %%y 0.5
}
};
}
在Win10,Tcl 8.6上进行了测试。