Python | Calculadora de préstamos usando Tkinter

Prerrequisito: Introducción a Tkinter
 

Python ofrece múltiples opciones para desarrollar GUI (interfaz gráfica de usuario). De todos los métodos GUI, Tkinter es el método más utilizado. Es una interfaz estándar de Python para el kit de herramientas Tk GUI que se envía con Python. Python con Tkinter genera la forma más rápida y sencilla de crear aplicaciones GUI. Crear una GUI usando Tkinter es una tarea fácil.
 

Para crear un Tkinter:

  1. Importando el módulo – Tkinter
  2. Crear la ventana principal (contenedor)
  3. Agregue cualquier cantidad de widgets a la ventana principal
  4. Aplique el evento Trigger en los widgets.

La GUI se verá como a continuación:

Veamos cómo crear una calculadora de préstamos utilizando la biblioteca Tkinter de Python GUI. La calculadora podrá calcular el monto total y el pago mensual en función del monto del préstamo, el período y la tasa de interés. 
Paso #1: Crea la ventana principal. 
 

Python3

def __init__(self):
    # Create a window
    window = Tk()
    window.title("Loan Calculator") # Set title
 
    # create the input boxes.
    Label(window, text = "Annual Interest Rate").grid(row = 1,
                                       column = 1, sticky = W)
    Label(window, text = "Number of Years").grid(row = 2,
                                  column = 1, sticky = W)
    Label(window, text = "Loan Amount").grid(row = 3,
                              column = 1, sticky = W)
    Label(window, text = "Monthly Payment").grid(row = 4,
                                  column = 1, sticky = W)
    Label(window, text = "Total Payment").grid(row = 5,
                                column = 1, sticky = W)
 
    # for taking inputs
    self.annualInterestRateVar = StringVar()   
    Entry(window, textvariable = self.annualInterestRateVar,
                 justify = RIGHT).grid(row = 1, column = 2)
 
    self.numberOfYearsVar = StringVar()
    Entry(window, textvariable = self.numberOfYearsVar,
            justify = RIGHT).grid(row = 2, column = 2)
 
    self.loanAmountVar = StringVar()
    Entry(window, textvariable = self.loanAmountVar,
         justify = RIGHT).grid(row = 3, column = 2)
 
    self.monthlyPaymentVar = StringVar()
    lblMonthlyPayment = Label(window, textvariable =
                self.monthlyPaymentVar).grid(row = 4,
                column = 2, sticky = E)
 
    self.totalPaymentVar = StringVar()
    lblTotalPayment = Label(window, textvariable =
                self.totalPaymentVar).grid(row = 5,
                column = 2, sticky = E)
     
    # create the button
    btComputePayment = Button(window, text = "Compute Payment",
                           command = self.computePayment).grid(
                               row = 6, column = 2, sticky = E)
    # Create an event loop
    window.mainloop()

  
Paso #2: Agregar funcionalidad.
 

Python3

def computePayment(self):
    # compute the total payment.
    monthlyPayment = self.getMonthlyPayment(float(self.loanAmountVar.get()),
                    float(self.annualInterestRateVar.get()) / 1200,
                    int(self.numberOfYearsVar.get()))
 
    self.monthlyPaymentVar.set(format(monthlyPayment, '10.2f'))
    totalPayment = float(self.monthlyPaymentVar.get()) * 12 \
                           * int(self.numberOfYearsVar.get())
    self.totalPaymentVar.set(format(totalPayment, '10.2f'))
 
# compute the monthly payment.
def getMonthlyPayment(self, loanAmount, monthlyInterestRate, numberOfYears):
    monthlyPayment = loanAmount * monthlyInterestRate /
                    (1- 1 / (1 + monthlyInterestRate) **
                    (numberOfYears * 12))
 
    return monthlyPayment;

  
Paso #3: programa completo 
 

Python3

# Import tkinter
from tkinter import *
class LoanCalculator:
 
    def __init__(self):
 
        window = Tk() # Create a window
        window.title("Loan Calculator") # Set title
        # create the input boxes.
        Label(window, text = "Annual Interest Rate").grid(row = 1,
                                          column = 1, sticky = W)
        Label(window, text = "Number of Years").grid(row = 2,
                                      column = 1, sticky = W)
        Label(window, text = "Loan Amount").grid(row = 3,
                                  column = 1, sticky = W)
        Label(window, text = "Monthly Payment").grid(row = 4,
                                      column = 1, sticky = W)
        Label(window, text = "Total Payment").grid(row = 5,
                                    column = 1, sticky = W)
 
        # for taking inputs
        self.annualInterestRateVar = StringVar()
        Entry(window, textvariable = self.annualInterestRateVar,
                     justify = RIGHT).grid(row = 1, column = 2)
        self.numberOfYearsVar = StringVar()
 
        Entry(window, textvariable = self.numberOfYearsVar,
                 justify = RIGHT).grid(row = 2, column = 2)
        self.loanAmountVar = StringVar()
 
        Entry(window, textvariable = self.loanAmountVar,
              justify = RIGHT).grid(row = 3, column = 2)
        self.monthlyPaymentVar = StringVar()
        lblMonthlyPayment = Label(window, textvariable =
                           self.monthlyPaymentVar).grid(row = 4,
                           column = 2, sticky = E)
 
        self.totalPaymentVar = StringVar()
        lblTotalPayment = Label(window, textvariable =
                       self.totalPaymentVar).grid(row = 5,
                       column = 2, sticky = E)
         
        # create the button
        btComputePayment = Button(window, text = "Compute Payment",
                                  command = self.computePayment).grid(
                                  row = 6, column = 2, sticky = E)
        window.mainloop() # Create an event loop
 
 
    # compute the total payment.
    def computePayment(self):
                 
        monthlyPayment = self.getMonthlyPayment(
        float(self.loanAmountVar.get()),
        float(self.annualInterestRateVar.get()) / 1200,
        int(self.numberOfYearsVar.get()))
 
        self.monthlyPaymentVar.set(format(monthlyPayment, '10.2f'))
        totalPayment = float(self.monthlyPaymentVar.get()) * 12 \
                                * int(self.numberOfYearsVar.get())
 
        self.totalPaymentVar.set(format(totalPayment, '10.2f'))
 
    def getMonthlyPayment(self, loanAmount, monthlyInterestRate, numberOfYears):
        # compute the monthly payment.
        monthlyPayment = loanAmount * monthlyInterestRate / (1
        - 1 / (1 + monthlyInterestRate) ** (numberOfYears * 12))
        return monthlyPayment;
        root = Tk() # create the widget
 
 # call the class to run the program.
LoanCalculator()

Producción: 

Explicación del código: 
 

  • El módulo Tkinter contiene el kit de herramientas Tk . Aquí, en este ejemplo, estamos importando todo el módulo de Tkinter en la primera línea. A continuación, estamos creando una clase definida por el usuario llamada LoanCalculator que contiene su propio miembro de datos y funciones de miembro.
  • def__init__(self) es un método especial en Python Class. Es un constructor de una clase de Python, luego creamos una ventana usando Tk(). La función de etiqueta crea un cuadro de visualización para tomar entrada y usar el método de cuadrícula para darle una estructura similar a una tabla.

¿Por qué usamos argumento pegajoso?  
De forma predeterminada, los widgets se crean en el centro, usando argumentos pegajosos podemos cambiarlo. Toma 4 valores: N, S, E, W. es decir, Norte, Este, Sur, Oeste.
 

  • Luego creamos un objeto llamado self.annualInterestRateVar, self.numberOfYearsVar, self.loanAmountVar, self.monthlyPaymentVar, self.totalPaymentVar y para los primeros 3 objetos tomamos la entrada usando la función entry().
  • Luego creamos el botón, es decir, calcular el pago, cuando hace clic en el botón, llama a la función de calcular el pago que pertenece a la calculadora de préstamos de clase. Usando la función mainloop ejecutamos nuestro programa de aplicación.
  • Cree una función para calcular el pago() dentro de la clase. Aquí almacenamos nuestras entradas del objeto en algunas variables, para simplificar nuestro cálculo matemático.
  • En el siguiente paso, creamos otra función llamada getMonthlyPayment() dentro de la clase. Después de obtener las entradas requeridas, calcula el pago mensual utilizando la función matemática simple que se proporciona en el programa.
  • Ahora root=Tk() significa inicializar tkinter , tenemos que crear un widget que es una ventana. Tenga en cuenta que el widget raíz debe crearse antes que cualquier otro widget.

Publicación traducida automáticamente

Artículo escrito por bulabanerjee y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *