Tkinter: Как привязать сдвиг

#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)