Mundo em Python

Calcular Obrigação

from tkinter import *

root =Tk()
class bonds():
def __init__(self):
self.root = root
self.janela()
self.dados() root.mainloop() def janela(self):
self.root.title("Calcular o Preço de Obrigações")
self.root.geometry("700x400")
self.root.resizable(False, False)
self.root.configure(background='#7ed8fd')
def dados (self):
# dados

# Dado 1
self.numero_pagamento_por_periodo = DoubleVar()
self.lb_numero_pagamento_por_periodo = Label(text="Número de pagamentos por período: ",
font=("Helvetica", '10'), bg="#4c4c4c",
fg='#ffffff')
self.lb_numero_pagamento_por_periodo.place(relx=0.2, rely=0.05)
self.numero_pagamento_por_periodo_entry = Entry(textvariable=self.numero_pagamento_por_periodo)
self.numero_pagamento_por_periodo_entry.place(relx=0.55, rely=0.05) # Dado 2

self.vencimento = DoubleVar()
self.lb_vencimento = Label(text="Número de anos até o vencimento: ",
font=("Helvetica", '10'), bg="#4c4c4c",
fg='#ffffff')
self.lb_vencimento.place(relx=0.2, rely=0.15)
self.vencimento_entry = Entry(textvariable=self.vencimento)
self.vencimento_entry.place(relx=0.55, rely=0.15) # Dado 3

self.rendimento_vencimento = DoubleVar()
self.lb_rendimento_vencimento = Label(text="Rendimento até o vencimento (em %): ",
font=("Helvetica", '10'), bg="#4c4c4c",
fg='#ffffff')
self.lb_rendimento_vencimento.place(relx=0.2, rely=0.25)
self.rendimento_vencimento_entry = Entry(textvariable=self.rendimento_vencimento)
self.rendimento_vencimento_entry.place(relx=0.55, rely=0.25) # dado 4
# Valor nominal

self.valor_nominal = DoubleVar()
self.lb_valor_nominal = Label(text="Valor Nominal: ",
font=("Helvetica", '10'), bg="#4c4c4c",
fg='#ffffff')
self.lb_valor_nominal.place(relx=0.2, rely=0.35)
self.valor_nominal_entry = Entry(textvariable=self.valor_nominal)
self.valor_nominal_entry.place(relx=0.55, rely=0.35) # dado 5
# Coupon Rate

self.cupom = DoubleVar()
self.lb_cupom = Label(text="Taxa de Cupom (em %): ",
font=("Helvetica", '10'), bg="#4c4c4c",
fg='#ffffff')
self.lb_cupom.place(relx=0.2, rely=0.45)
self.cupom_entry = Entry(textvariable=self.cupom)
self.cupom_entry.place(relx=0.55, rely=0.45) # Butão de calcular
#
self.bt_calcular = Button(text="Calcular", bd=2,
font=('verdana', '8', 'bold'), bg='gray18',
command=self.calcularprecoacao,
fg='white')
self.bt_calcular.place(relx=0.4, rely=0.6, relwidth=0.2, relheight=0.1) #Resultado
self.precocalculado = StringVar()
self.lb_precocalculado = Label(text="Preço da Obrigação: ",
font=("Helvetica", '10', 'italic'))
self.lb_precocalculado.place(relx=0.25, rely=0.8)
self.precocalculado_resultado = Label(textvariable=self.precocalculado,
font=("Helvetica", '8'))
self.precocalculado_resultado.place(relx=0.45, rely=0.8,relwidth=0.2) def calcularprecoacao(self):
m = self.numero_pagamento_por_periodo.get()
t = self.vencimento.get()
tempo = self.rendimento_vencimento.get()
ytm = tempo/100
fv = self.valor_nominal.get()
cupomi = self.cupom.get()
c = cupomi / 100
preco_obrigação = ((fv * c / m * (1 - (1 + ytm / m) ** (-m * t))) / (ytm / m)) + \
fv * (1 + (ytm / m)) ** (-m * t)
preco_obrigaçãoarrendado = round(preco_obrigação,3)
return self.precocalculado.set(preco_obrigaçãoarrendado)
bonds()
0