如何取消绑定窗口小部件的默认绑定

时间:2014-05-20 01:39:25

标签: widget tcl bind tk

我很难理解如何取消绑定事件。

我知道基本解除你自己的绑定

bind .c <Up> {magic code}
bind .c <Up> {}

我真的想知道如何从预绑定小部件中删除绑定。

示例文本小部件带有向上移动的向上键,我该如何删除它? 因此,当用户点击密钥时,没有任何事情发生。

有没有办法从小部件中删除所有绑定? (没有粒子理由只是想知道。)

而且我读到这应该有用,解除单绑定

 bind all <Up> {}

(&#34; Up&#34;是OS X的向上箭头键)

但对我来说没有。 :(

对不起,如果这看起来像一个愚蠢的问题,但绑定最近一直在绊倒我。先感谢您。

1 个答案:

答案 0 :(得分:5)

Tk具有不同的绑定类(称为“bindtags”),它将其绑定到。默认情况下,每个小部件都包含:

  1. 与小部件同名的绑定标签。这些是应用程序代码的正常选择。
  2. 与小部件类同名的绑定标签(例如,按钮为Button,画布为Canvas)。这些通常留给Tk的默认值;从这里删除内容可能会破坏代码的其他部分。
  3. 与包含窗口小部件的顶层同名的绑定标签(顶层除外)。这些是针对每个对话框的热键,有点像。
  4. 全局绑定标记all。它们可以处理一些“逆止器”,但通常不会使用。
  5. 每个绑定标签最多只能使用一个绑定; Tk更喜欢使用最具体的一个。

    从一个绑定标签中删除绑定并不意味着不会处理该事件;另一个绑定标签上的绑定可能仍会接收它。试图破解其他绑定标签以欺骗代码并不会令人满意。但是,如果一个标记上的绑定以break结束,则会阻止进一步尝试绑定标记;它提前终止处理。这样可以轻松屏蔽特定事件:

    bind .c <Up> break
    

    Tk在其内部的几个地方使用这种掩蔽技巧......