Windows系统下Tk菜单的-underline选项是否无法正常生效?
问题原因及解决方案
1. -underline参数未显示下划线
该问题和Tk兼容性无关,属于Windows系统的默认行为:
- Windows默认隐藏所有菜单项的访问键下划线,只有按下
Alt键时才会全局显示所有菜单的下划线标记。你可以按下Alt键验证:按下后File菜单的访问键会先显示下划线,打开File菜单后即可看到New File的首字母N带有下划线,此时按N键可直接触发对应命令。 - 如果你需要始终显示下划线,可以进入Windows「设置-辅助功能-键盘」,开启「访问键」开关即可永久显示所有菜单的下划线标记。
- Tk 8.6.12在Windows 11上对-underline选项的支持是完整的,不存在适配问题。
2. 菜单项命令无法触发
你的代码中只给New File菜单项绑定了命令CreateNewFile,但没有定义对应的Tcl过程,所以点击时不会有响应,未启动控制台的情况下也看不到报错信息。补充该过程的定义即可正常触发。
如果需要让标注的Ctrl + N加速键全局生效,还要额外给顶层窗口绑定对应的键盘事件。
修正后可运行的完整代码:
package require Tk option add *tearOff 0 # 定义菜单项绑定的命令过程 proc CreateNewFile {} { # 示例逻辑:弹出提示框验证触发成功 tk_messageBox -message "新建文件命令已触发" } menu .menubar . configure -menu .menubar set b .menubar menu $b.file # 给File级联菜单也加-underline 0,按下Alt后按F即可直接打开File菜单 $b add cascade -menu $b.file -label File -underline 0 $b.file add command -label "New File" -underline 0 -accelerator "Ctrl + N" -command "CreateNewFile" $b.file add separator $b.file add command -label "Exit" -command exit # 绑定全局Ctrl+N快捷键,触发新建文件命令 bind . <Control-n> CreateNewFile
内容的提问来源于stack exchange,提问作者Versalytics
相关产品推荐
相关产品推荐

