12. (П6) Реалізація діалогів відкриття файлів і підтвердження дій¶
Передумови¶
- Прочитана Лекція 11 — Діалогові вікна (QMessageBox, QFileDialog, QDialog)
- Успішно запущені приклади
MessageBoxDemo,FileDialogDemoтаContactBookз лекції
Мова в коді
Усі рядкові літерали, написи в меню, заголовок вікна, тексти діалогів та імена змінних — лише латиницею. Своє ім'я, прізвище та групу пишіть у транслітерації: Ivan Petrenko, KI-31. Кирилиця допускається тільки в коментарях.
Завдання¶
Створити файл text_editor.py — простий текстовий редактор на QMainWindow з одним полем QTextEdit. База даних тут не потрібна: працюємо зі звичайними *.txt файлами.
Мета роботи — не редактор, а діалоги навколо нього: жодна дія, яка може знищити набраний текст, не виконується без питання користувачеві.
Персоналізація¶
STUDENT_NAME = "Ivan Petrenko" # ваше ім'я та прізвище транслітерацією
STUDENT_GROUP = "KI-31" # ваша група
Заголовок вікна: Text Editor - Ivan Petrenko, KI-31. Якщо файл відкритий — його ім'я на початку: notes.txt - Text Editor - Ivan Petrenko, KI-31. Якщо є незбережені зміни — зірочка одразу після імені файлу: notes.txt* - Text Editor - ....
Схема вікна¶
+----------------------------------------------------------------+
| QMainWindow notes.txt* - Text Editor - Ivan Petrenko |
+----------------------------------------------------------------+
| File Help <- menuBar() |
+----------------------------------------------------------------+
| |
| +----------------------------------------------------------+ |
| | | |
| | editor | |
| | (QTextEdit, centralWidget) | |
| | | |
| +----------------------------------------------------------+ |
| |
+----------------------------------------------------------------+
| Ready [ Chars: 128 ] |
| <- statusBar() |
+----------------------------------------------------------------+
Chars: 128 — постійний віджет рядка стану (addPermanentWidget), який оновлюється при кожній зміні тексту.
Команди меню¶
| Команда | Клавіша | Що робить |
|---|---|---|
New |
Ctrl+N |
очищає редактор і забуває поточний файл |
Open... |
Ctrl+O |
вибирає файл через QFileDialog і завантажує його вміст |
Save |
Ctrl+S |
записує текст у поточний файл; якщо файлу ще немає — поводиться як Save As... |
Save As... |
Ctrl+Shift+S |
питає нове ім'я файлу й записує текст туди |
Quit |
Ctrl+Q |
закриває застосунок |
About |
— | QMessageBox.about() з назвою застосунку, вашим ім'ям і групою |
Знайшли помилку чи бажаєте додати інформацію, щоб покращити курс? Створіть issue на GitHub