Mundo em Python

Conversor de cumprimento: Passos para Metros

from tkinter import *
from tkinter import ttk
class AppConverter:
def __init__(self, root):
self.root = root
self.janela()
self.frames_da_janela()
self.widgets_frame1()
self.Menus()
self.root.mainloop() def janela(self):
self.root.title("Conversor de cumprimento: Passos para Metros (vice-versa)")
self.root.configure(background='#1e3743')
self.root.geometry("400x400")
self.root.resizable(0, 0) 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.96) def widgets_frame1(self):
self.abas = ttk.Notebook(self.frame_1)
self.Passos_para_Metros = Frame(self.abas)
self.Metros_para_Passos = Frame(self.abas) self.Passos_para_Metros.configure(background="#dfe3ee")
self.Metros_para_Passos.configure(background="#dfe3ee")
self.abas.add(self.Passos_para_Metros, text="Passos para Metros")
self.abas.add(self.Metros_para_Passos, text="Metros para Passos")
self.abas.place(relx=0, rely=0, relwidth=0.98, relheight=0.98) # --- Passos para Metros ---
self.Passos_var = StringVar()
self.lb_Passos = Label(self.Passos_para_Metros,
text="Número de Passos: ",
bg='#dfe3ee', fg='#107db2', font=("Arial", "14", "bold"))
self.lb_Passos.place(relx=0.05, rely=0.1)
self.Passos_entry = Entry(self.Passos_para_Metros,
textvariable=self.Passos_var,
justify='center', font=("Arial", "14"))
self.Passos_entry.place(relx=0.55, rely=0.1, relwidth=0.4) self.tamanho_Passos_var = StringVar()
self.lb_Passos_tamanho = Label(self.Passos_para_Metros,
text="Tamanho do Passo (m): ",
bg='#dfe3ee', fg='#107db2', font=("Arial", "14", "bold"))
self.lb_Passos_tamanho.place(relx=0.05, rely=0.35)
self.Passos_entry_tamanh = Entry(self.Passos_para_Metros,
textvariable=self.tamanho_Passos_var,
justify='center', font=("Arial", "14"))
self.Passos_entry_tamanh.place(relx=0.55, rely=0.35, relwidth=0.4) self.bt_calcular1 = Button(self.Passos_para_Metros, text="Calcular",
bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'),
command=self.butaoclick1)
self.bt_calcular1.place(relx=0.3, rely=0.6, relwidth=0.4, relheight=0.15) self.resultado_Metros = StringVar()
self.resultado1 = Label(self.Passos_para_Metros, textvariable=self.resultado_Metros,
font=("Arial", "14", "bold"), bg='#dfe3ee', fg='#107db2')
self.resultado1.place(relx=0.3, rely=0.8) # --- Metros para Passos ---
self.Metros_var = StringVar()
self.lb_Metros = Label(self.Metros_para_Passos,
text="Distância em Metros: ",
bg='#dfe3ee', fg='#107db2', font=("Arial", "14", "bold"))
self.lb_Metros.place(relx=0.05, rely=0.2)
self.Metros_entry = Entry(self.Metros_para_Passos,
textvariable=self.Metros_var,
justify='center', font=("Arial", "14"))
self.Metros_entry.place(relx=0.55, rely=0.2, relwidth=0.4) self.tamanho_Passos2_var = StringVar()
self.lb_Passos_tamanho2 = Label(self.Metros_para_Passos,
text="Tamanho do Passo (m): ",
bg='#dfe3ee', fg='#107db2', font=("Arial", "14", "bold"))
self.lb_Passos_tamanho2.place(relx=0.05, rely=0.4)
self.Passos_entry_tamanho2 = Entry(self.Metros_para_Passos,
textvariable=self.tamanho_Passos2_var,
justify='center', font=("Arial", "14"))
self.Passos_entry_tamanho2.place(relx=0.55, rely=0.4, relwidth=0.4) self.bt_calcular2 = Button(self.Metros_para_Passos, text="Calcular",
bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'),
command=self.butaoclick2)
self.bt_calcular2.place(relx=0.3, rely=0.6, relwidth=0.4, relheight=0.15) self.resultado_Passos = StringVar()
self.resultado2 = Label(self.Metros_para_Passos, textvariable=self.resultado_Passos,
font=("Arial", "14", "bold"), bg='#dfe3ee', fg='#107db2')
self.resultado2.place(relx=0.3, rely=0.8) def butaoclick1(self):
try:
passos = int(self.Passos_var.get())
tamanho_passo = float(self.tamanho_Passos_var.get())
distancia = passos * tamanho_passo
self.resultado_Metros.set(f"{distancia:.2f} metros")
except ValueError:
self.resultado_Metros.set("Erro: Valores inválidos.") def butaoclick2(self):
try:
metros = float(self.Metros_var.get())
tamanho_passo = float(self.tamanho_Passos2_var.get())
passos = metros / tamanho_passo
self.resultado_Passos.set(f"{passos:.2f} passos")
except ValueError:
self.resultado_Passos.set("Erro: Valores inválidos.") def Quit(self):
self.root.destroy() def Menus(self):
menubar = Menu(self.root)
self.root.config(menu=menubar)
filemenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Opções", menu=filemenu)
filemenu.add_command(label="Sair", command=self.Quit)
if __name__ == "__main__":
root = Tk()
AppConverter(root)
0