Top.Mail.Ru

Создание простой программы для заметок с графическим интерфейсом на Tkinter и хранением данных в MySQL.

Создание простой программы для заметок с графическим интерфейсом на Tkinter и хранением данных в MySQL.

В этом проекте мы создаем графическое приложение на Python, позволяющее пользователю управлять заметками: добавлять, редактировать, удалять и просматривать их. Программа реализована с помощью библиотеки Tkinter для графического интерфейса и MySQL для хранения данных. Также реализована функция настройки подключения к базе данных через интерфейс.

Проект состоит из нескольких файлов:

  • main.py — основной файл, содержащий логику приложения и наследующий интерфейсные элементы.

  • widgets.py — отдельный класс с графическими элементами.

  • db.py — класс для работы с MySQL (предположительно, хотя не предоставлен).

  • config.py — файл конфигурации с переменными (TITLE, WINDOWS).

  • config_db.json — JSON-файл с настройками подключения к MySQL.

Интерфейс разделён на две части:

  1. Список заметок слева (TreeView со столбцами "Заголовок" и "Создано").

  2. Форма редактирования заметки справа (заголовок, описание, кнопки).

В верхнем меню также есть пункт "Настройки", через который можно:

  • Настроить подключение к MySQL.

  • Выполнить экспорт заметок.

  • Завершить работу программы.


Основной класс: NotesApp

Класс NotesApp наследуется от Widgets, в котором реализована функция create_widgets() — создание и размещение всех интерфейсных компонентов.

Инициализация

def __init__(self, root):
    self.db = DB()
    self.root = root
    ...

При создании экземпляра класса происходит:

  • Подключение к базе данных.

  • Установка заголовка и размеров окна.

  • Загрузка всех виджетов и заметок.

  • Привязка события (хотя bind пока не используется).


Работа с заметками

Загрузка всех заметок

def load_notes(self):
    ...

Сначала очищается список TreeView, затем выполняется запрос к базе данных. Каждая заметка вставляется в таблицу с iid, равным id, что упрощает выборку и удаление.


Добавление/редактирование заметки

def save_button_(self):
    ...
  • Если пользователь выбрал заметку — обновляется существующая.

  • Если нет — создаётся новая.

  • Дата и время сохраняются в формате YYYY-MM-DD HH:MM:SS.


Выбор заметки

def on_note_select(self, event):
    ...

При выборе строки в TreeView, данные о заметке извлекаются из базы и отображаются в полях. Также активируются кнопки "Удалить" и "Сохранить".


Удаление заметки

def delete_note(self):
    ...

Удаляет выбранную заметку из базы после подтверждения.


Очистка формы (новая заметка)

def add_note(self):
    ...

Очищает поля ввода, сбрасывает выбор заметки и отключает кнопку "Удалить".


Настройка MySQL

def show_mysql_settings(self):
    ...

При вызове открывается новое окно с полями для ввода:

  • host, user, password, db_name, port

Настройки загружаются из config_db.json (если есть) и сохраняются обратно после редактирования.


Сохранение настроек

def save_settings(self):
    ...

Сохраняет все введённые параметры в config_db.json.


Тест соединения

def test_mysql_connection(self):
    ...

Пытается подключиться к MySQL с введёнными параметрами и выводит сообщение об успехе или ошибке.


Класс Widgets: Интерфейс

Этот вспомогательный класс формирует визуальные элементы:

  • Меню с настройками.

  • Список заметок (TreeView).

  • Панель редактирования: Entry для заголовка, Text для описания, кнопка "Сохранить".

Привязка обработчиков осуществляется через command=.


Что можно улучшить

  • Добавить автосохранение при смене заметки.

  • Реализовать функцию экспорта в MySQL.

  • Добавить поиск/фильтр заметок.

  • Сделать авторизацию пользователя.

  • Улучшить визуальный стиль с помощью ttk.Style.

Данный проект является отличным примером применения Tkinter и MySQL в настольном приложении. Он демонстрирует:

  • Создание интерфейса с разделением логики.

  • Использование TreeView для отображения списка записей.

  • Работа с базой данных через модуль mysql.connector.

  • Хранение конфигурации в формате JSON.


Пример использования

  1. Запустите main.py.

  2. Настройте MySQL-соединение через меню.

  3. Добавьте новые заметки или редактируйте существующие.

  4. Удаляйте ненужные записи.


 

Автор:

19

Читайте также

1 комментарий

  • Имя автора
    admin@yemorkovin.ru
    03.06.2025 в 20:06

    https://github.com/yemorkovin/notes


Бот: Здравствуйте! Я чат-бот веб-разработчика. Чем могу помочь в создании или доработке вашего сайта?