tcl-tk:菜单项的不区分大小写的加速器(或多个加速器)
tcl-tk: Case insensitive accelerator (or multiple accelerators) for a menu item
在创建菜单栏时,我注意到 Ctrl+s shortcut/accelerator 可以很好地调用保存菜单,但是 Ctrl+S(或 Ctrl+s 大写)不调用保存菜单。以下是代码。
$fileMenu add command -label "Save As" -command { saveOperation } -underline 1 -accelerator "Ctrl-s"
是否可以为一个菜单项设置一个不区分大小写的加速器,或者为一个菜单项设置多个加速器,以便在这两种情况下捕获按键?
除非我遗漏了什么,否则 -accelerator
选项只是菜单标签的可视组件。你仍然需要为它创建一个绑定来做一些事情。因此,要创建不区分大小写的加速器,您可以执行以下操作:
$fileMenu add command -label "Save As" -command {saveOperation} \
-underline 1 -accelerator "Ctrl-s"
# I'm assuming the parent window is where you want the accelerator to work
set w [winfo parent $fileMenu]
bind $w <Control-KeyPress-s> saveOperation ; # lowercase
bind $w <Control-KeyPress-S> saveOperation ; # uppercase
在创建菜单栏时,我注意到 Ctrl+s shortcut/accelerator 可以很好地调用保存菜单,但是 Ctrl+S(或 Ctrl+s 大写)不调用保存菜单。以下是代码。
$fileMenu add command -label "Save As" -command { saveOperation } -underline 1 -accelerator "Ctrl-s"
是否可以为一个菜单项设置一个不区分大小写的加速器,或者为一个菜单项设置多个加速器,以便在这两种情况下捕获按键?
除非我遗漏了什么,否则 -accelerator
选项只是菜单标签的可视组件。你仍然需要为它创建一个绑定来做一些事情。因此,要创建不区分大小写的加速器,您可以执行以下操作:
$fileMenu add command -label "Save As" -command {saveOperation} \
-underline 1 -accelerator "Ctrl-s"
# I'm assuming the parent window is where you want the accelerator to work
set w [winfo parent $fileMenu]
bind $w <Control-KeyPress-s> saveOperation ; # lowercase
bind $w <Control-KeyPress-S> saveOperation ; # uppercase