Maxscript中为按钮添加带下划线快捷键标记的实现问题
解决方案
方案1:启用系统原生控件渲染(官方规范方案)
3ds Max 自定义Rollout默认采用自绘控件逻辑,不识别&前缀的助记符规则,你只需要在创建对话框时添加style:#systemControlDialog参数,即可启用Windows原生控件渲染,此时&前缀会自动转换为对应字母的下划线,交互逻辑和系统自带的queryBox完全一致:
try destroyDialog testRol catch() rollout testRol "测试对话框" ( button btn_yes "&是" width:120 across:2 button btn_no "&否" width:120 on btn_yes pressed do print "选择了是" on btn_no pressed do print "选择了否" ) -- 关键参数启用原生控件风格 createDialog testRol 260 45 style:#systemControlDialog
该方案无需硬编码特殊字符,后续修改按钮文本时仅需调整&的位置即可,交互符合系统默认规范,是最优解。
方案2:自定义实现(适配特殊UI需求)
如果你需要保留3ds Max默认的自绘控件风格,可手动添加下划线并绑定键盘事件实现同等效果,注意组合下划线字符\x0332需要放在目标字母后方,不要放在前方,即可避免位置偏移问题:
try destroyDialog testRol catch() rollout testRol "测试对话框" width:260 ( button btn_yes "Y̲es" width:120 across:2 button btn_no "N̲o" width:120 -- 绑定键盘事件,按对应字母直接触发按钮 on testRol keyDown key do ( if key == "y" or key == "Y" then btn_yes.pressed() if key == "n" or key == "N" then btn_no.pressed() ) on btn_yes pressed do print "选择了Yes" on btn_no pressed do print "选择了No" ) createDialog testRol
内容的提问来源于stack exchange,提问作者Ste
相关产品推荐
相关产品推荐

