
当你对窗口小部件进行绑定时,实际上并没有绑定到窗口小部件本身。当你这样做时
mywidget.bind(...),实际发生的是绑定与具有与小部件相同名称的绑定标签相关联。
当检测到事件时,Tkinter首先确定哪个窗口小部件拦截了该事件。该窗口小部件将具有与之关联的零个或多个(默认值:四个)绑定标签的列表。Tkinter将检查每个标签,以查看是否存在与事件匹配的绑定。如果找到一个,它将执行绑定,然后继续执行下一个标记,直到用完标记或绑定的函数之一返回
string为止
"break"。
该序列如下所示:
- 你按“ x”键。此时,“ x”尚未插入任何位置
- Tkinter获取具有键盘焦点的小部件的绑定标签。
- 默认情况下,第一个绑定标签是小部件本身。该标签上有绑定吗?如果是这样,请执行它。例如,你可以打印窗口小部件的内容。因为尚未触发其他绑定,所以“ x”将不属于内容。
- 如果绑定的函数返回,”break”则不再进行事件处理。“ x”将不会插入到小部件中。
- 如果窗口小部件未返回”break”,则tkinter进入下一个绑定标记。
- 默认情况下,下一个绑定标签是小部件类。在与该事件匹配的类上是否存在绑定(按字母“ x”的键)?
- 在这种情况下,该类确实具有此事件的绑定,该绑定实际上是将“ x”插入到小部件中。到目前为止,“ x”仍未插入小部件中。但是,在此绑定之后,如果你打印了内容,则会看到“ x”
- 以这种方式继续处理,直到所有绑定标签都已处理完毕。
根据评论部分中正在进行的讨论,似乎还不清楚。我将尝试使其尽可能简单:
是类绑定,它将一个字符从内存中的事件对象复制到窗口小部件,从而使它出现在屏幕上。在类绑定触发之前,角色将不会出现在小部件中。类绑定之后,它将在小部件中。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)