Глава 18 · Финальные штрихи
Горячие клавиши
Ctrl+Z, Ctrl+Y и другие быстрые команды — привязаны на root, а не только на холст.
Быстрые команды с клавиатуры
| Сочетание | Действие |
|---|---|
Ctrl+Z | Undo — отменить последнее действие |
Ctrl+Y | Redo — повторить отменённое действие |
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
Практика выполняется локально