from tkinter import *
from tkinter import ttk
class Indicadores:
def __init__(self, root):
self.root = root
self.janela()
self.frames_da_janela()
self.widgets_frame1()
root.mainloop()
def janela(self):
self.root.title("Conversão de Calorias para Joules e vice-versa")
self.root.configure(background='#1e3743')
self.root.geometry("450x200")
self.root.resizable(False, False)
def frames_da_janela(self):
self.frame_1 = Frame(self.root, bd=4, bg='#dfe3ee', highlightbackground='#759fe6', highlightthickness=2)
self.frame_1.place(relx=0.02, rely=0.02, relwidth=0.96, relheight=0.95)
def widgets_frame1(self):
self.abas = ttk.Notebook(self.frame_1)
self.calorias_para_joules = Frame(self.abas)
self.joules_para_calorias = Frame(self.abas)
self.calorias_para_joules.configure(background="#dfe3ee")
self.joules_para_calorias.configure(background="#dfe3ee")
self.abas.add(self.calorias_para_joules, text="Calorias para Joules")
self.abas.add(self.joules_para_calorias, text="Joules para Calorias")
self.abas.place(relx=0, rely=0, relwidth=0.98, relheight=0.98)
self.configurar_frame_conversao(self.calorias_para_joules, "Calorias", self.butaoclick1, "resultado1", "Joules")
self.configurar_frame_conversao(self.joules_para_calorias, "Joules", self.butaoclick2, "resultado2", "Calorias")
def configurar_frame_conversao(self, frame, entrada_label, botao_click, resultado_label_name, saida_label):
label_entrada = Label(frame, text=f"{entrada_label}: ", bg='#dfe3ee', fg='#107db2', font=("Arial", "15", "bold"))
label_entrada.place(relx=0.1, rely=0.05)
entrada_var = DoubleVar()
entrada_entry = Entry(frame, textvariable=entrada_var, justify='center')
entrada_entry.place(relx=0.35, rely=0.08, relwidth=0.45)
botao_calcular = Button(frame, text="Calcular", bd=2, bg='#107db2', fg='white', font=('verdana', 14, 'bold'), command=botao_click)
botao_calcular.place(relx=0.25, rely=0.3, relwidth=0.45, relheight=0.25)
resultado_label = Label(frame, text="", bg='#dfe3ee', fg='#107db2', font=("Arial", "12"))
resultado_label.place(relx=0.05, rely=0.78, relwidth=0.9)
setattr(self, entrada_label.lower(), entrada_var)
setattr(self, resultado_label_name, resultado_label)
def butaoclick1(self):
calorias = self.calorias.get()
try:
joules = calorias * 4.184
resultado = f"{calorias} Calorias são {joules:.4f} Joules"
self.resultado1.config(text=resultado)
except ValueError:
self.resultado1.config(text="Entrada inválida. Coloque um número.")
def butaoclick2(self):
joules = self.joules.get()
try:
calorias_resultado = joules / 4.184
resultado = f"{joules} Joules são {calorias_resultado:.4f} Calorias"
self.resultado2.config(text=resultado)
except ValueError:
self.resultado2.config(text="Entrada inválida. Coloque um número.")
if __name__ == "__main__":
root = Tk()
Indicadores(root)