gpt4 book ai didi

python - 在 tkinter 中重新映射默认键绑定(bind)

转载 作者:太空狗 更新时间:2023-10-30 03:02:09 25 4
gpt4 key购买 nike

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

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

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

1) 如何重新映射此行为?

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

最佳答案

您想阅读“bindtags”——tkinter 的绑定(bind)机制。

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

大多数默认绑定(bind)都在类绑定(bind)上。这意味着您在小部件上创建的任何特定绑定(bind)都发生在默认绑定(bind)之前。在这种特殊情况下,由于您要绑定(bind)到根窗口,因此您的绑定(bind)发生在之后

您可以随时创建一个绑定(bind)来阻止事件在绑定(bind)标签链中向上传播。为此,您可以从绑定(bind)中返回文字字符串 "break"。因此,如果您的绑定(bind)是在文本小部件本身上,您可以通过让 setconnpanelopen 返回 "break" 来阻止默认行为。由于您的原始绑定(bind)在根窗口上,这无济于事,因为默认绑定(bind)发生在您的绑定(bind)之前。

您有几个解决方案:第一个,将绑定(bind)放在小部件上而不是根窗口上。或者,将它留在根窗口上,这样无论哪个小部件获得焦点它都会触发,然后向文本小部件添加一个绑定(bind),该绑定(bind)只返回 "break" 以防止发生默认绑定(bind).

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

关于python - 在 tkinter 中重新映射默认键绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22907200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com