gui module

class gui.FinancialPlannerApp(root)[исходный код]

Базовые классы: object

Управляющий класс графического интерфейса «Финансовый Планер».

Класс инкапсулирует логику визуализации данных через Tkinter, обработку пользовательского ввода, хранение текущего состояния транзакций и вызов функций аналитического анализа (Pandas/Matplotlib).

root

Главное окно приложения.

Type:

tk.Tk

transactions

Список объектов транзакций, загруженных из хранилища.

Type:

list[Transaction]

amount_var

Буфер для ввода суммы операции.

Type:

tk.StringVar

category_var

Буфер для ввода категории.

Type:

tk.StringVar

date_var

Буфер для ввода даты (формат YYYY-MM-DD).

Type:

tk.StringVar

desc_var

Буфер для ввода описания.

Type:

tk.StringVar

type_var

Переключатель типа операции („expense“/“income“).

Type:

tk.StringVar

tree

Виджет таблицы для отображения истории транзакций.

Type:

ttk.Treeview

add_transaction()[исходный код]

Обрабатывает добавление новой транзакции через интерфейс.

Метод выполняет последовательность действий: 1. Извлекает значения из строковых переменных Tkinter (StringVar). 2. Вызывает функции внешней валидации: validate_amount(),

validate_category() и validate_date().

  1. При успешной проверке создает объект Transaction.

  2. Инициирует сохранение в CSV-файл и обновляет локальный список.

  3. Перерисовывает таблицу в интерфейсе и очищает поля ввода.

В случае любой ошибки валидации или записи процесс прерывается, и пользователю выводится модальное окно с описанием проблемы.

Исключение:

Exception – Перехватывает все исключения (ValueError, IOError и др.), возникающие в процессе валидации или сохранения, и отображает их через messagebox.showerror.

Обработчик события: формирует и отображает график динамики денежных потоков.

Метод преобразует текущую историю транзакций в формат временного ряда и визуализирует тренды доходов и расходов. Это позволяет пользователю проанализировать финансовую активность в хронологическом порядке.

clear_input_fields()[исходный код]

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

Метод очищает переменные amount_var, category_var и desc_var, что приводит к визуальному удалению текста из соответствующих виджетов ttk.Entry.

create_widgets()[исходный код]

Создает и размещает все элементы пользовательского интерфейса.

Метод выполняет визуальную компоновку приложения, разделенную на три логических блока: 1. Форма ввода (LabelFrame): сбор данных о сумме, категории, дате и описании. 2. Таблица истории (Treeview): интерактивный список всех транзакций с прокруткой. 3. Панель аналитики (LabelFrame): кнопки вызова графических отчетов.

В процессе выполнения инициализируются связанные переменные Tkinter (amount_var, category_var и др.), необходимые для реактивного взаимодействия с пользователем.

Примечание

Использует менеджеры геометрии pack для основных контейнеров и grid для элементов внутри форм ввода и аналитики.

expense_dia()[исходный код]

Обработчик события: генерирует и отображает круговую диаграмму расходов.

Метод подготавливает данные, конвертируя текущий список транзакций в формат DataFrame, и инициирует построение графика распределения расходов по категориям.

income_dia()[исходный код]

Обработчик события: генерирует и отображает круговую диаграмму доходов.

Метод подготавливает данные, конвертируя текущий список транзакций в формат DataFrame, и инициирует построение графика распределения доходов по категориям.

refresh_transaction_table()[исходный код]

Синхронизирует виджет таблицы с актуальным списком транзакций.

Метод полностью очищает текущие записи в графическом виджете Treeview и заново заполняет его данными из атрибута self.transactions. В процессе выполняется форматирование данных: преобразование типов в человекочитаемый вид (например, „income“ в „Доход“) и округление сумм.

После обновления таблицы выполняется автоматическая прокрутка к последней (самой новой) записи.