根据 Effbot 的 Tkinterbook on Events and Bindings,我可以通过以下代码防止换行符插入到 Text 小部件中:
text.bind("<Return>", lambda e: "break")
这确实有效,但它阻止了<Return>
事件到达父表单,父表单具有自己的<Return>
绑定,可以在 Text 小部件和其他小部件上执行工作。我想要做的是在 Text 小部件中捕获诸如<Return>
,<KP_Enter>
等事件并防止插入换行符,但我仍然希望该事件向上传播。我找不到这样做的好方法,因为 Text 小部件没有像 Entry 小部件那样的验证形式(这是通常完成此类工作的地方)。
我在想,如果我覆盖<KeyPress>
并检查event.keycode
,13
我可以跳过内部调用::tk::TextInsert
,而是调用 Tk 内部的任何函数,该函数负责将事件传递到绑定标签中的下一个元素,基于读取text.tcl
Python 中的 TCL 代码。