Skip to content

8. (П4) Каркас десктоп-застосунку: менеджер нотаток

Передумови

Мова в коді

Усі рядкові літерали, написи на віджетах і в меню, заголовок вікна, 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