Untitled

 avatar
unknown
plain_text
3 days ago
3.7 kB
3
Indexable
import tkinter as tk
from tkinter import ttk, messagebox

class CalculadoraJuros:
    def __init__(self, root):
        self.root = root
        self.root.title("Calculadora de Juros de Parcelas")

        # Configurações de juros
        self.juros_config = {
            1: 5,
            2: 10,
            3: 15,
            4: 20,
            5: 25,
            6: 30,
            7: 35,
            8: 40,
            9: 45,
            10: 50,
            11: 55,
            12: 60,
            13: 65,
            14: 70,
            15: 75,
            16: 80,
            17: 85,
            18: 90
        }

        # Interface gráfica
        self.label_valor = ttk.Label(root, text="Valor Total:")
        self.label_valor.grid(row=0, column=0, padx=10, pady=10)

        self.entry_valor = ttk.Entry(root)
        self.entry_valor.grid(row=0, column=1, padx=10, pady=10)

        self.label_parcelas = ttk.Label(root, text="Número de Parcelas:")
        self.label_parcelas.grid(row=1, column=0, padx=10, pady=10)

        self.entry_parcelas = ttk.Entry(root)
        self.entry_parcelas.grid(row=1, column=1, padx=10, pady=10)

        self.button_calcular = ttk.Button(root, text="Calcular", command=self.calcular_juros)
        self.button_calcular.grid(row=2, column=0, columnspan=2, pady=10)

        self.button_configurar = ttk.Button(root, text="Configurar Juros", command=self.abrir_configuracoes)
        self.button_configurar.grid(row=3, column=0, columnspan=2, pady=10)

        self.resultado = ttk.Label(root, text="")
        self.resultado.grid(row=4, column=0, columnspan=2, pady=10)

    def calcular_juros(self):
        try:
            valor_total = float(self.entry_valor.get())
            parcelas = int(self.entry_parcelas.get())

            if parcelas < 1 or parcelas > 18:
                messagebox.showerror("Erro", "Número de parcelas deve estar entre 1 e 18.")
                return

            juros = self.juros_config.get(parcelas, 0)
            valor_com_juros = valor_total * (1 + juros / 100)
            valor_parcela = valor_com_juros / parcelas

            resultado_text = f"Valor Total com Juros: R$ {valor_com_juros:.2f}\n"
            resultado_text += f"Valor da Parcela: R$ {valor_parcela:.2f}"

            self.resultado.config(text=resultado_text)

        except ValueError:
            messagebox.showerror("Erro", "Por favor, insira valores válidos.")

    def abrir_configuracoes(self):
        config_window = tk.Toplevel(self.root)
        config_window.title("Configurações de Juros")

        labels = {}
        entries = {}

        for i in range(1, 19):
            labels[i] = ttk.Label(config_window, text=f"Juros para {i}x:")
            labels[i].grid(row=i-1, column=0, padx=10, pady=5)

            entries[i] = ttk.Entry(config_window)
            entries[i].insert(0, str(self.juros_config.get(i, 0)))
            entries[i].grid(row=i-1, column=1, padx=10, pady=5)

        def salvar_configuracoes():
            for i in range(1, 19):
                try:
                    self.juros_config[i] = float(entries[i].get())
                except ValueError:
                    messagebox.showerror("Erro", "Por favor, insira valores válidos.")
                    return
            messagebox.showinfo("Sucesso", "Configurações salvas com sucesso!")
            config_window.destroy()

        button_salvar = ttk.Button(config_window, text="Salvar", command=salvar_configuracoes)
        button_salvar.grid(row=18, column=0, columnspan=2, pady=10)

if __name__ == "__main__":
    root = tk.Tk()
    app = CalculadoraJuros(root)
    root.mainloop()
Leave a Comment