将按键绑定到 tcl/tk 中的帧

Binding a keypress to a frame in tcl/tk

我到处找答案,所以我来了。问题很简单:为什么绑定按键(例如 Escape)在框架上不起作用?示例:

pack [frame .f]
bind .f <Escape> exit; #won't work

框架可以很好地处理按键事件,但通常不会,因为它们通常没有焦点,并且在您单击它们或使用 Tab[= 时默认情况下不会获取焦点29=] 围绕可聚焦的事物循环。

最直接的解决方法就是:

focus .f

这使得键盘事件现在 进入框架。但是,您可能想使用它以便点击聚焦:

bind .f <1> {focus %W}

这使得小部件参与选项卡遍历:

.f configure -takefocus 1

最后,框架在获得焦点时不会显示任何东西,因为将它们的“高亮厚度”配置为零宽度。让我们改变一下:

.f configure -highlightthickness 2

这应该就是您所需要的(或者至少在我测试时对我有用)。