首页 > 解决方案 > Tkinter 之间的区别和 <>

问题描述

我很难在互联网上寻找这个 - 我的搜索技能不是从头开始。我可以记住事件名称,但我总是要查找要使用哪种类型的尖括号

例如,一些 tkinter 事件与 <> 中的单词绑定

tab4e.bind("<Button-1>",f_x)

其他在<<>>,例如

nbook.bind('<<NotebookTabChanged>>', handle_tab_changed)

为什么某些绑定在 <> 而其他绑定在 <<>> 中有什么原因吗?

尽管示例是在 python 中给出的,但我还是添加了 TCL,以防 TCL 编码人员可能知道答案。

标签: pythontkintertcl

解决方案


具有一组括号的绑定是底层操作系统直接支持的内置事件。示例包括<KeyPress><ButtonPress-1><Configure>等等。大多数内置事件直接与实际的物理事件相关联,例如按下鼠标按钮或键盘上的键。

带有双括号的绑定称为虚拟事件。它们不一定代表任何类型的物理事件,并且通常(尽管并非总是)对于特定的小部件是唯一的。比如<<ListboxSelect>>只被listbox使用,<<NotebookTabChanged>>只被ttk notebook使用,等等。

虚拟事件可以通过使用event_add小部件方法的其他事件的组合来触发,尽管它们也可以通过调用event_generate.

tcl/tk 手册页包括一个预定义的虚拟事件列表


推荐阅读