在Win11下工作时如何切换到TCL文档中定义的tkinter文本小部件快捷方式?

问题描述 投票:0回答:1

正如我在 TCL 文档 中发现的那样,Control-a 是将光标移动到行首的快捷方式(适用于 Linux)。但是当我在 Windows11 中使用此快捷方式时,它会选择文本小部件中的所有文本。 Linux 和 Windows 之间在其他快捷方式方面还有许多其他差异。我现在遇到的问题是我的 tkinter 应用程序在 Linux 和 Windows 上需要不同的快捷方式。

我希望快捷方式是相同的。

python tkinter keyboard-shortcuts text-widget
1个回答
0
投票

快捷键不一样,试图让小部件以与操作系统一致的方式执行。例如,大多数 Windows 用户不希望 control-a 移动到行的前面。它们用于控制它们使用的所有其他 Windows 应用程序中的全选。

Tkinter 不提供在不同绑定集之间切换的单个函数,但您可以使用

bind
方法用您想要的任何内容覆盖默认绑定。

许多非常基本的按键绑定都是作为虚拟事件实现的。因此,您还可以将绑定重新分配给您想要的任何虚拟事件,而不是添加自定义绑定。这种方法的优点是您不需要知道要调用什么代码来获得相同的行为。

例如,要将 control-a 从全选切换为将光标移动到行首,您可以执行以下操作:

root.event_delete("<<SelectAll>>", "<Control-Key-a>")
root.event_add("<<LineStart>>", "<Control-Key-a>")

您可以在事件手册页上找到虚拟事件列表。您可以通过查看 tk 源代码在文件 tk.tcl

中了解这些事件的定义位置
© www.soinside.com 2019 - 2024. All rights reserved.