Глава 18 · Финальные штрихи

Горячие клавиши

Ctrl+Z, Ctrl+Y и другие быстрые команды — привязаны на root, а не только на холст.

Быстрые команды с клавиатуры

СочетаниеДействие
Ctrl+ZUndo — отменить последнее действие
Ctrl+YRedo — повторить отменённое действие
Ctrl+Nочистить холст (с подтверждением)
Ctrl+Sсохранить рисунок в JSON
Ctrl+Oоткрыть сохранённый рисунок
goryachie_klavishi.py
self.root.bind("<Control-z>", lambda _e: self.undo())
self.root.bind("<Control-y>", lambda _e: self.redo())
self.root.bind("<Control-s>", lambda _e: self.save_document())
self.root.bind("<Control-o>", lambda _e: self.load_document())
self.root.bind("<Control-n>", lambda _e: self.clear_canvas())
Сочетания клавиш — не универсальны между операционными системами
Ctrl — стандарт для Windows и Linux. На macOS пользователи по привычке ждут Cmd, а не Ctrl — Tkinter не подменяет одно другим автоматически. Полная кроссплатформенная поддержка потребовала бы отдельно проверять sys.platform и привязывать оба варианта — эта глава этим не занимается, но важно не обещать того, чего код не делает.
Привязка на root, а не только на Canvas — вспомним главу 17
Горячие клавиши повешены на self.root, а не на self.canvas — они должны работать независимо от того, какой именно виджет окна сейчас в фокусе. Если бы в приложении было текстовое поле (например, для подписи рисунка), пришлось бы учитывать те же правила фокуса и bindtags, что разбирал раздел 17.11 — горячие клавиши не должны перехватывать ввод текста в поле, где пользователь печатает.
Практика: горячие клавиши приложения
Модуль tkinter открывает нативное окно Python — выполните локально в VS Code, PyCharm или Jupyter
Практика выполняется локально
Открыть практику →