如何覆盖 Tkinter 文本小部件中的继承绑定
将事件绑定到 Tkinter 文本小部件时,您可能会遇到以下情况:自己的事件绑定优先于小部件的内置绑定。例如,您可能希望在触发事件绑定函数时修改小部件中的文本。
开箱即用,会出现问题,因为您的事件绑定是在文本小部件的类绑定之前调用的,负责将用户输入插入到小部件中。
解决方案:操作绑定标签
要解决此问题,我们可以修改绑定处理的顺序操作与小部件关联的“bindtags”。绑定标签是分配给小部件的标签,默认情况下,每个小部件都有一个与其名称相对应的绑定标签。小部件还有其他绑定标签,例如它们的类、根窗口路径和一个名为“all”的特殊标签。
收到事件时,Tkinter 按以下顺序处理绑定,从最具体到最不具体:widget、class、toplevel、全部。
选项 1:重新排序绑定标签
覆盖继承绑定的一个选项是重新排列绑定标签的顺序。通过将小部件的绑定标签移到类绑定标签之后,我们可以确保类绑定在小部件绑定之前处理。
选项 2:引入新的绑定标签
另一种方法是创建一个附加的绑定标签,放置在类绑定标签之后。通过将事件绑定到这个新标签,我们可以确保我们的绑定在类绑定之后执行。
使用新绑定标签的好处
重新排列绑定标签可以影响所有小部件上的绑定,可能会干扰那些依赖特定顺序的绑定。通过引入新的绑定标签,您可以在类绑定之后有选择地应用覆盖的绑定,而其他绑定不受影响。
示例
提供的 Python 代码演示了三种不同的绑定标签上面提到的配置。当您与条目小部件交互并按键时,您会注意到每个小部件的状态标签更新不同:
以上是如何覆盖 Tkinter 文本小部件中的继承绑定?的详细内容。更多信息请关注PHP中文网其他相关文章!