Найти в Дзене
SergSergius

Как написать кредитный калькулятор на python

В этот раз я решил написать какую-нибудь полезную программу на питоне. В качестве таковой был выбран кредитный калькулятор. Логика программы будет достаточно простой. Пользователь вводит следующие значения: сумма кредита; срок кредитования; процентная ставка; сумма дополнительных платежей (страховки и т д). На выходе пользователь получает значение ежемесячных платежей и суммы переплаты по процентам и т д.

Итак, для начала определимся с каким модулем мы будем строить интерфейс. Выбор пал на tkinter и customtkinter. В качестве декорации фона будет задействован модуль pillow.

Вся программа уместится в один класс Main(Frame). Создадим функцию инициации.

-2

Здесь мы прописали логотип-подложку в виде изображения темной темы customtkinter, а также прописали размеры этой подложки. Изображение будет расположено в лейбле с заданными параметрами смещения по строкам и столбцам.

Далее пропишем элементы интерфейса в функции build.

-3

В качестве элемента для вывода информации по кредитному расчету выступит тексбокс от customtkinter (CTk.CTkTextbox) с соответствующими праметрами оформления (шрифт, цвет фона и т д) и расположения.

Далее введем еще один лейбл, цель которого быть ссылкой на изображение, оформляющее кнопки программы. Для простоты, изображение основного фона программы и кнопок одно и тоже.

Далее идет набор элементов лейбл (CTk.CTkLabel) и энтри (CTk.CTkEntry) все от того-же customtkinter, куда мы будем вбивать значения, которые мы определили вначале.

Теперь создадим кортеж кнопок, которые будут ссылаться на логическую часть кода нашей программы (logic). Всего будет три кнопки: “Рассчитать параметры кредита”, “Сохранить текст”, “Справка”.

Соответственно, при нажатии на первую кнопку будет выполнен собственно сам кредитный расчет с выводом результатов в текстбокс. При нажатии на вторую кнопку мы сможем сохранить результаты расчета в файл текстового формата (txt, doc и т д). Ну а третья кнопка будет вызывать информационное сообщение с неким текстом о программе.

Кроме того, прописаны параметры переноса кнопок на последующие строки. А с помощью-лямбда функции мы прописали собственно само поведение программы при нажатии на ту или иную кнопку.

Переходим к логической функции:

-4

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

При нажатии на первую кнопку производится считывание значений наших параметров из элементов CTk.CTkEntry и присваивание их в некие переменные. Далее, на основе имеющихся переменных, производится собственно сам расчет. Мы считаем следующие параметры: общая сумма выплат за n лет, размер ежемесячного платежа, размер общей переплаты по кредиту (в рублях и %%-ах).

Далее нам необходимо составить некий текстовый шаблон, в который мы расставим результаты нашего расчета. Шаблон следующего вида:

content = f’текст {tkr} текст2 {okn} рублей. … \n’

Как видно, наши переменные отделяются от основного текста через фигурные скобки. Завершает шаблон следующая последовательность символов (\n) которая позволяет производить подряд несколько расчетов, при этом каждый из них будет начинаться с красной строки.

Собрав шаблон, мы наконец можем его вывести в наш текстбокс.

Далее прописывается логика при нажатии на вторую кнопку. В этот раз мы уже пользуемся не оператором if, а elif.

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

Ну а третья кнопка вызывает диалоговое окно типа showinfo, где мы можем прописать название (title), какой-либо текст. Закрыть окно можно с помощью кнопки «ОК».

Вот, собственно, и вся программа. Осталось только прописать хвост.

Полный текстовый код доступен по ссылке: https://sergsergius.ru/credit_calc_python/

У этой программы есть один существенный недостаток. Изображения, используемые для оформления элементов интерфейса, при преобразовании кода в исполняемый exe-файл через auto–py–to–exe, не войдут в него. Для получения программы в одном файле, лучше всего написать ее в pyqt5 фреймворке, с возможностью перевода изображений в ресурс питона (см. предыдущую статью).