Tkinter 中的绑定标签:揭示“滞后一”问题
考虑以下使用默认绑定标签的 Tkinter 代码:
entry1.bind("<KeyPress>", OnKeyPress)
事件值将无法在 OnKeyPress 中访问函数,导致“滞后一”效应。发生这种情况是因为默认绑定标签优先考虑小部件标签,该标签在类绑定之前评估小部件内容,从而插入字符。
说明:
当事件发生时触发后,Tkinter 确定具有焦点的小部件的相关绑定标签。默认情况下,初始标签是小部件本身。如果此标签存在绑定,Tkinter 就会执行它,并可能输出小部件内容。但是,如果未定义绑定,Tkinter 将继续处理下一个标签。
在这种情况下,后续标签是小部件类。类绑定将字符插入到小部件中。因此,在执行小部件和类绑定之后,小部件内容将被更新。这会导致“滞后一”问题。
解决方案:
要解决此问题,请修改绑定标签的顺序,以确保在类绑定之前检查类绑定。小部件绑定。例如:
entry3.bindtags(('.entry1','Entry','post-class-bindings', '.', 'all'))
此修改确保类绑定首先处理事件,在小部件绑定尝试检索其内容之前插入字符。因此,可以在 OnKeyPress 中访问事件值。
摘要:
在 Tkinter 中使用默认绑定标签可能会导致“滞后一”效果,其中事件值为不能在事件处理程序中立即可用。通过更改绑定标签顺序以优先考虑类绑定,可以解决此问题。
以上是为什么 Tkinter 的默认 Bindtags 会导致按键事件出现'滞后一”问题?的详细内容。更多信息请关注PHP中文网其他相关文章!