Calculadora de préstamos usando PyQt5 en Python

En este artículo, veremos cómo podemos crear una calculadora de préstamos usando PyQt5 , a continuación se muestra una imagen que muestra cómo se verá la calculadora de préstamos:
 

Loan calculator user interface

PyQt5 es un kit de herramientas GUI multiplataforma, un conjunto de enlaces de Python para Qt v5. Uno puede desarrollar una aplicación de escritorio interactiva con mucha facilidad gracias a las herramientas y la simplicidad que ofrece esta biblioteca.
 

Pasos de implementación de la GUI:
1. Cree una etiqueta de encabezado que muestre el nombre de la calculadora 
2. Cree un par de etiqueta y edición de línea para la tasa de interés, etiqueta para mostrar lo que el usuario tiene que ingresar y edición de línea para ingresar texto 
3. De manera similar, cree un par para el número de año y por cantidad 
4. Cree un botón pulsador para calcular 
5. Cree una etiqueta para mostrar el pago mensual calculado 
6. Cree una etiqueta para mostrar la cantidad total calculada

Pasos de implementación de back-end :
1. Realice la edición de línea para aceptar solo el número como entrada 
2. Agregue acción al botón pulsador 
3. Dentro de la acción del botón pulsador obtenga el texto de las ediciones de línea 
4. Verifique si el texto de edición de línea está vacío o cero y luego regrese para que la función no se ejecute más 
5. Convierta el valor del texto en un número entero 
6. Calcule la cantidad mensual y establezca este valor en la etiqueta 
7. Calcule la cantidad total a partir de la cantidad mensual y muestre este valor a través de la etiqueta 

A continuación se muestra la implementación:
 

Python3

# importing required libraries
from PyQt5.QtWidgets import *
from PyQt5 import QtCore, QtGui
from PyQt5.QtGui import *
from PyQt5.QtCore import *
  
import sys
  
  
class Window(QMainWindow):
    
    # constructor
    def __init__(self):
        super().__init__()
  
        # setting title
        self.setWindowTitle("Python ")
  
        # width of window
        self.w_width = 400
  
        # height of window
        self.w_height = 500
  
        # setting geometry
        self.setGeometry(100, 100, self.w_width, self.w_height)
  
        # calling method
        self.UiComponents()
  
        # showing all the widgets
        self.show()
  
    # method for adding components
    def UiComponents(self):
        # creating head label
        head = QLabel("Loan Calculator", self)
  
        # setting geometry to the head
        head.setGeometry(0, 10, 400, 60)
  
        # font
        font = QFont('Times', 15)
        font.setBold(True)
        font.setItalic(True)
        font.setUnderline(True)
  
        # setting font to the head
        head.setFont(font)
  
        # setting alignment of the head
        head.setAlignment(Qt.AlignCenter)
  
        # setting color effect to the head
        color = QGraphicsColorizeEffect(self)
        color.setColor(Qt.darkCyan)
        head.setGraphicsEffect(color)
  
        # creating a interest label
        i_label = QLabel("Annual Interest", self)
  
        # setting properties to the interest label
        i_label.setAlignment(Qt.AlignCenter)
        i_label.setGeometry(20, 100, 170, 40)
        i_label.setStyleSheet("QLabel"
                              "{"
                              "border : 2px solid black;"
                              "background : rgba(70, 70, 70, 35);"
                              "}")
        i_label.setFont(QFont('Times', 9))
  
        # creating a QLineEdit object to get the interest
        self.rate = QLineEdit(self)
  
        # accepting only number as input
        onlyInt = QIntValidator()
        self.rate.setValidator(onlyInt)
  
        # setting properties to the rate line edit
        self.rate.setGeometry(200, 100, 180, 40)
        self.rate.setAlignment(Qt.AlignCenter)
        self.rate.setFont(QFont('Times', 9))
  
  
        # creating a number of years label
        n_label = QLabel("Years ", self)
  
        # setting properties to the years label
        n_label.setAlignment(Qt.AlignCenter)
        n_label.setGeometry(20, 150, 170, 40)
        n_label.setStyleSheet("QLabel"
                              "{"
                              "border : 2px solid black;"
                              "background : rgba(70, 70, 70, 35);"
                              "}")
        n_label.setFont(QFont('Times', 9))
  
        # creating a QLineEdit object to get the years
        self.years = QLineEdit(self)
  
        # accepting only number as input
        onlyInt = QIntValidator()
        self.years.setValidator(onlyInt)
  
        # setting properties to the rate line edit
        self.years.setGeometry(200, 150, 180, 40)
        self.years.setAlignment(Qt.AlignCenter)
        self.years.setFont(QFont('Times', 9))
  
        # creating a loan amount label
        a_label = QLabel("Amount", self)
  
        # setting properties to the amount label
        a_label.setAlignment(Qt.AlignCenter)
        a_label.setGeometry(20, 200, 170, 40)
        a_label.setStyleSheet("QLabel"
                              "{"
                              "border : 2px solid black;"
                              "background : rgba(70, 70, 70, 35);"
                              "}")
        a_label.setFont(QFont('Times', 9))
  
        # creating a QLineEdit object to get the amount
        self.amount = QLineEdit(self)
  
        # accepting only number as input
        onlyInt = QIntValidator()
        self.amount.setValidator(onlyInt)
  
        # setting properties to the rate line edit
        self.amount.setGeometry(200, 200, 180, 40)
        self.amount.setAlignment(Qt.AlignCenter)
        self.amount.setFont(QFont('Times', 9))
  
  
        # creating a push button
        calculate = QPushButton("Compute Payment", self)
  
        # setting geometry to the push button
        calculate.setGeometry(125, 270, 150, 40)
  
        # adding action to the calculate button
        calculate.clicked.connect(self.calculate_action)
  
        # creating a label to show monthly payment
        self.m_payment = QLabel(self)
  
        # setting properties to m payment label
        self.m_payment.setAlignment(Qt.AlignCenter)
        self.m_payment.setGeometry(50, 340, 300, 60)
        self.m_payment.setStyleSheet("QLabel"
                                     "{"
                                     "border : 3px solid black;"
                                     "background : white;"
                                     "}")
        self.m_payment.setFont(QFont('Arial', 11))
  
        # creating a label to show monthly payment
        self.y_payment = QLabel(self)
  
        # setting properties to y payment label
        self.y_payment.setAlignment(Qt.AlignCenter)
        self.y_payment.setGeometry(50, 410, 300, 60)
        self.y_payment.setStyleSheet("QLabel"
                                     "{"
                                     "border : 3px solid black;"
                                     "background : white;"
                                     "}")
        self.y_payment.setFont(QFont('Arial', 11))
  
    # method for calculating monthly 
    # and annually payments
    def calculate_action(self):
  
        # getting annual interest rate
        annualInterestRate = self.rate.text()
  
        # if there is no number is entered
        if len(annualInterestRate) == 0 or annualInterestRate == '0':
            return
  
        # getting number of years
        numberOfYears = self.years.text()
  
        # if there is no number is entered
        if len(numberOfYears) == 0 or numberOfYears == '0':
            return
  
        # getting loan amount
        loanAmount = self.amount.text()
  
        # if there is no number is entered
        if len(loanAmount) == 0 or loanAmount == '0':
            return
  
        # converting text to int
        annualInterestRate = int(annualInterestRate)
        numberOfYears = int(numberOfYears)
        loanAmount = int(loanAmount)
  
        # getting monthly interest rate
        monthlyInterestRate = annualInterestRate / 1200
  
        # calculating monthly payemnt
        monthlyPayment = loanAmount * monthlyInterestRate / (1 - 1 / (1 + monthlyInterestRate) ** (numberOfYears * 12))
  
        # setting formatting
        monthlyPayment = "{:.2f}".format(monthlyPayment)
  
        # setting text to the label
        self.m_payment.setText("Monthly Payment : " + str(monthlyPayment))
  
        # getting total payment
        totalPayment = float(monthlyPayment) * 12 * numberOfYears
        totalPayment = "{:.2f}".format(totalPayment)
  
        # setting text to the label
        self.y_payment.setText("Total Payment : " + str(totalPayment))
  
  
  
# create pyqt5 app
App = QApplication(sys.argv)
  
# create the instance of our Window
window = Window()
  
# start the app
sys.exit(App.exec())

Producción : 
 

Publicación traducida automáticamente

Artículo escrito por rakshitarora 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 *