重新映射 tkinter 中的默认键绑定

2023-12-26

我正在向我的根窗口添加一个键绑定(Tk()实例,其中包含一个文本小部件):

root.bind("Control-o", setconnpanelopen)

问题是,似乎control-o默认情况下绑定到“插入换行符”,因此我的程序会触发,但它也会插入换行符! 即使我放了一个,也会发生这种情况return 'break'在它的最后 - 所以它之前就开火了,看起来是这样。

1)我如何重新映射这种行为?

2)我没有在任何地方找到默认列表keybindings文本小部件 - 它们在某处可用吗?


您想要阅读“bindtags”——tkinter 的绑定机制。

小部件有一组按顺序处理的绑定“标签”(或“bindtags”)。例如,一个文本小部件有四个标签:小部件的标签、小部件类的标签(这是内部类名,而不是 python 类)、顶级窗口的标签和“all”的标签。

大多数默认绑定位于类绑定上。这意味着您在小部件上创建的任何特定绑定都会发生before默认绑定。在这种特殊情况下,由于您要绑定到根窗口,因此您的绑定正在发生after.

您可以随时创建一个绑定来停止事件在绑定标签链上的传播。您可以通过返回文字字符串来完成此操作"break"来自你的绑定。因此,如果您的绑定位于文本小部件本身上,您可以通过以下方式防止默认行为setconnpanelopen return "break"。由于您的原始绑定位于根窗口上,因此这不会有帮助,因为会发生默认绑定before你的绑定。

您有两种解决方案:第一,将绑定放置在小部件上而不是根窗口上。或者,将其保留在根窗口上,以便无论哪个小部件具有焦点它都会触发,然后将绑定添加到文本小部件,该绑定除了返回之外什么也不做"break"以防止发生默认绑定。

有关绑定的明确列表,请参阅http://tcl.tk/man/tcl8.5/TkCmd/text.htm#M162 http://tcl.tk/man/tcl8.5/TkCmd/text.htm#M162-- 这指向 tcl/tk,但这就是 tkinter 的动力,并且它是 tkinter 文档的最终权威。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重新映射 tkinter 中的默认键绑定 的相关文章

随机推荐