from tkinter import *
root = Tk()
root.geometry("600x500")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Função para a soma dos n primeiros termos de uma PG finita")
titulo = Label(text="Soma de uma PG finita", font=("Arial", "28", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.15, rely=0.05)
texto_sub1 = Label(text="Primeiro termo :", font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.2, rely=0.25)
texto_sub2 = Label(text="Razão :", font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
texto_sub2.place(relx=0.36, rely=0.4)
texto_sub3 = Label(text="Número de termos :", font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
texto_sub3.place(relx=0.13, rely=0.55)
# Entrada para o primeiro termo
Primeiro_termo = StringVar()
Primeiro_termo_entrada = Entry(textvariable=Primeiro_termo, font=("Arial", "12", "bold"), bg="white", fg="blue", justify='center')
Primeiro_termo_entrada.place(relx=0.55, rely=0.26, relwidth=0.35)
Primeiro_termo_entrada.focus()
Razão = StringVar()
Razão_entrada = Entry(textvariable=Razão, font=("Arial", "12", "bold"), bg="white", fg="blue", justify='center')
Razão_entrada.place(relx=0.55, rely=0.41, relwidth=0.35)
Número_termos = StringVar()
Número_termos_entrada = Entry(textvariable=Número_termos, font=("Arial", "12", "bold"), bg="white", fg="blue", justify='center')
Número_termos_entrada.place(relx=0.55, rely=0.56, relwidth=0.35)
def limpar():
Número_termos_entrada.delete(0, END)
Razão_entrada.delete(0, END)
Primeiro_termo_entrada.delete(0, END)
resultado_texto.config(text="")
def soma_pg_finitos(a1, r, n):
if r == 1:
return a1 * n
return a1 * (1 - r**n) / (1 - r)
def app():
try:
primeiro = float(Primeiro_termo.get())
r = float(Razão.get())
n = int(Número_termos.get())
if r == 1:
soma = soma_pg_finitos(primeiro, r, n) # Soma para r=1
elif abs(r) >= 1:
resultado_texto.config(text="A razão deve ser menor que 1 em módulo.")
return
else:
soma = soma_pg_finitos(primeiro, r, n) # Soma para outras razões
resultado_texto.config(text=f"Soma dos {n} primeiros termos: {soma:.2f}")
except ValueError:
resultado_texto.config(text="Valor digitado inválido!")
but1 = Button(text="Calcular", bd=2, bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.65, relwidth=0.25, relheight=0.1)
but_limpar = Button(text="Limpar", bd=2, bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=limpar)
but_limpar.place(relx=0.4, rely=0.65, relwidth=0.25, relheight=0.1)
but_sair = Button(text="Sair", bd=2, bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=root.destroy)
but_sair.place(relx=0.7, rely=0.65, relwidth=0.25, relheight=0.1)
resultado_texto = Label(text="", font=("Arial", 12, "bold"), bg="#cfe2f3")
resultado_texto.place(relx=0.05, rely=0.8, relwidth=0.9, relheight=0.15)
root.mainloop()