При создании строки меню я заметил, что Ctrl + сек ярлыка/Ускоритель работает нормально для вызова меню сохранения, но Ctrl + S (или Ctrl + s с CAPS включено) не вызывает меню «Сохранить». Ниже приведен код.TCL-ок: без учета регистра ускоритель (или несколько ускорителей) для пункта меню
$fileMenu add command -label "Save As" -command { saveOperation } -underline 1 -accelerator "Ctrl-s"
Можно ли иметь регистронезависимый акселератор для пункта меню или несколько ускорителей для пункта меню, которые захватывают нажатие в обеих случаях?
Вместо вызова команды в связывании, можно вызвать пункт меню: 'привязки $ W [список $ FileMenu ссылаться {Save As }] '. Какой способ предпочтительнее зависит от вашей структуры программы, но привязка к элементу меню означает, что если вы отключите пункт меню, привязка будет подавлена (она срабатывает, но не действует). –
Я обычно направляю как ускорители, так и пункты меню через объект действия (терминологию заимствования из Java Swing), которая также знает, как отключить и на _all_ местах, которые проходят через него. Использование общей модели всегда помогает снизить кажущуюся внутреннюю сложность графического интерфейса ... –