Untitled

mail@pastecode.io avatar
unknown
python
a year ago
3.5 kB
0
Indexable
Never
#!/usr/local/bin/python
# coding: latin-1
import tkinter as tk

def calcular_ahorro():
    ingresos = float(entrada_ingresos.get())
    gastos_fijos = [float(valor.get()) for valor in entradas_gastos_fijos]
    gastos_variables = [float(valor.get()) for valor in entradas_gastos_variables]
    meta_ahorro = float(entrada_meta_ahorro.get())

    total_gastos = sum(gastos_fijos) + sum(gastos_variables)
    presupuesto_disponible = ingresos - total_gastos

    if presupuesto_disponible < 0:
        resultado.config(text="¡Cuidado! Tus gastos superan tus ingresos.")
    else:
        dp = [0] * (int(presupuesto_disponible) + 1)

        for i in range(1, int(presupuesto_disponible) + 1):
            max_ahorro = 0

            for j in range(len(gastos_variables)):
                if gastos_variables[j] <= i:
                    ahorro_actual = dp[i - int(gastos_variables[j])] + int(gastos_variables[j])
                    if ahorro_actual > max_ahorro:
                        max_ahorro = ahorro_actual

            dp[i] = max_ahorro

        if dp[int(presupuesto_disponible)] >= meta_ahorro:
            resultado.config(text="¡Felicidades! Has alcanzado tu meta de ahorro.")
        else:
            resultado.config(text="No has alcanzado tu meta de ahorro.")

        resultado_ahorro.config(text="El ahorro máximo alcanzado es: " + str(dp[int(presupuesto_disponible)]))

ventana = tk.Tk()
ventana.title("Control de Gastos Personales")

etiqueta_ingresos = tk.Label(ventana, text="Ingresos:")
etiqueta_ingresos.grid(row=0, column=0, padx=10, pady=10, sticky="w")

entrada_ingresos = tk.Entry(ventana)
entrada_ingresos.grid(row=0, column=1, padx=10, pady=10)

etiqueta_gastos_fijos = tk.Label(ventana, text="Gastos Fijos:")
etiqueta_gastos_fijos.grid(row=1, column=0, padx=10, pady=10, sticky="w")

entradas_gastos_fijos = []
for i in range(5):
    etiqueta_gasto_fijo = tk.Label(ventana, text="Gasto fijo {}: ".format(i + 1))
    etiqueta_gasto_fijo.grid(row=i + 2, column=0, padx=10, pady=10, sticky="w")

    entrada_gasto_fijo = tk.Entry(ventana)
    entrada_gasto_fijo.grid(row=i + 2, column=1, padx=10, pady=10)
    entradas_gastos_fijos.append(entrada_gasto_fijo)

etiqueta_gastos_variables = tk.Label(ventana, text="Gastos Variables:")
etiqueta_gastos_variables.grid(row=7, column=0, padx=10, pady=10, sticky="w")

entradas_gastos_variables = []
for i in range(5):
    etiqueta_gasto_variable = tk.Label(ventana, text="Gasto variable {}: ".format(i + 1))
    etiqueta_gasto_variable.grid(row=i + 8, column=0, padx=10, pady=10, sticky="w")

    entrada_gasto_variable = tk.Entry(ventana)
    entrada_gasto_variable.grid(row=i + 8, column=1, padx=10, pady=10)
    entradas_gastos_variables.append(entrada_gasto_variable)

etiqueta_meta_ahorro = tk.Label(ventana, text="Meta de Ahorro:")
etiqueta_meta_ahorro.grid(row=13, column=0, padx=10, pady=10, sticky="w")

entrada_meta_ahorro = tk.Entry(ventana)
entrada_meta_ahorro.grid(row=13, column=1, padx=10, pady=10)

boton_calcular = tk.Button(ventana, text="Calcular Ahorro Máximo", command=calcular_ahorro)
boton_calcular.grid(row=14, column=0, columnspan=2, padx=10, pady=10)

resultado = tk.Label(ventana, text="")
resultado.grid(row=15, column=0, columnspan=2, padx=10, pady=10)

resultado_ahorro = tk.Label(ventana, text="")
resultado_ahorro.grid(row=16, column=0, columnspan=2, padx=10, pady=10)

ventana.mainloop()