#python-3.x #tkinter #key-bindings
Вопрос:
Я создаю меню в Tkinter с помощью ускорителя:
menubar = tk.Menu(window)
file_menu = tk.Menu(menubar)
menubar.add_cascade(label='File', menu=file_menu)
window.config(menu=menubar)
file_menu.add_command(label='Open resource pack', command=openPack, accelerator='Cmd o' if IS_MAC else 'Ctrl o')
window.bind_all('<M1-o>' if IS_MAC else '<Control-o>', openPack)
file_menu.add_command(label='Copy original pack', command=copyOriginalPack, accelerator='Shift Cmd c' if IS_MAC else 'Shift Ctrl c')
window.bind_all('<M1-C>' if IS_MAC else '<Control-C>', copyOriginalPack)
Но для Copy original pack
опции комбинация клавиш Shift Command C. Ускоритель показывает только комбинацию клавиш в строке меню, но на самом деле не выполняет команду, поэтому мне приходится вручную привязываться к окну.
Если я правильно помню, чтобы связатьShiftCommand C, мне просто нужно сказать Control C
и сделать C в верхнем регистре из-за Shift.
Но я не могу связать Shift. Это работает, если я нажимаю на пункт меню, но комбинация клавиш этого не делает. Это работает для другого варианта, который не имеет Shift
Комментарии:
1. Вы хотите связать Shift самостоятельно или Shift c? В последнем случае это просто С (капитал»с»).
2. @DYZ Я хочу привязать Shift Cmd C (или Shift Ctrl C на других платформах)
3. Сдвиг с-это просто «капитал С». Вы должны связать Ctrl C.
4. Но именно это я и сделал. Я привязан
Control C
илиCommand C
на macOS
Ответ №1:
Я исправил это, написав <M1-Shift-c>
(обратите внимание на строчную букву c)