8. (П4) Каркас десктоп-застосунку: менеджер нотаток¶
Передумови¶
- Прочитана Лекція 7 — Головне вікно застосунку (QMainWindow). Структура головного вікна
- Успішно запущені приклади
MenuDemo,StatusBarDemo,DockDemo,PersistentWindowтаTextEditorз лекції - Виконана Практична 3 — панель нотаток: база SQLite і таблиця
notesберуться звідти
Мова в коді
Усі рядкові літерали, написи на віджетах і в меню, заголовок вікна, SQL-запити та імена змінних — лише латиницею. Своє ім'я, прізвище та групу пишіть у транслітерації: Ivan Petrenko, KI-31. Кирилиця допускається тільки в коментарях.
Завдання¶
Створити файл notes_app.py — той самий менеджер нотаток, але вже як повноцінний десктоп-застосунок на QMainWindow: з меню, панеллю інструментів, бічною панеллю, рядком стану й запам'ятовуванням вигляду вікна між запусками.
Персоналізація¶
На початку файлу оголосити чотири константи і використовувати лише їх (не дублювати ці значення в коді):
STUDENT_NAME = "Ivan Petrenko" # ваше ім'я та прізвище транслітерацією
STUDENT_GROUP = "KI-31" # ваша група
DB_FILE = "workspace_ivan_petrenko.db" # файл бази з практичної 3
SETTINGS_APP = "NotesAppIvanPetrenko" # ім'я застосунку для QSettings
База даних¶
Та сама таблиця, що й у практичній 3 (створюється при старті, якщо її ще немає):
CREATE TABLE IF NOT EXISTS notes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
text TEXT NOT NULL,
created_at TEXT NOT NULL
)
created_at заповнюється в Python при створенні нотатки: datetime.now().strftime("%Y-%m-%d %H:%M").
Схема головного вікна¶
Підпис усередині кожної зони — ім'я змінної, під яким її треба створити:
+--------------------------------------------------------------------+
| NotesWindow (QMainWindow) Notes - Ivan Petrenko, KI-31 |
+--------------------------------------------------------------------+
| File View Help <- menuBar() |
+--------------------------------------------------------------------+
| [ New ] [ Save ] [ Delete ] <- main_toolbar |
+--------------------------------------------------------------------+
| | |
| +------------------+ | +-------------------------------------+ |
| | | | | | |
| | notes_list | | | note_editor | |
| | | | | (centralWidget) | |
| | (у notes_dock) | | | | |
| | | | | | |
| +------------------+ | +-------------------------------------+ |
| | |
+--------------------------------------------------------------------+
| Ready [ counter_label ] |
+--------------------------------------------------------------------+
^- statusBar()
Знайшли помилку чи бажаєте додати інформацію, щоб покращити курс? Створіть issue на GitHub