Mundo em Python

Conversor de Potência (outra versão)

import tkinter as tk
from tkinter import ttk, messagebox # Importar ttk para estilos e messagebox para avisos

def watts_para_cv(watts): return watts / 735.5

def cv_para_watts(cv):
return cv * 735.5

def watts_para_hp(watts): return watts / 745.7

def hp_para_watts(hp): return hp * 745.7


current_conversion_mode = "watts_para_cv"

def perform_conversion(): try:
input_value = float(entry_input.get())
result_value = 0.0
result_unit = ""

if current_conversion_mode == "watts_para_cv":
result_value = watts_para_cv(input_value)
result_unit = "CV"
output_unit_label.config(text="CV:")
elif current_conversion_mode == "cv_para_watts":
result_value = cv_para_watts(input_value)
result_unit = "Watts"
output_unit_label.config(text="Watts:")
elif current_conversion_mode == "watts_para_hp":
result_value = watts_para_hp(input_value)
result_unit = "HP"
output_unit_label.config(text="HP:")
elif current_conversion_mode == "hp_para_watts":
result_value = hp_para_watts(input_value)
result_unit = "Watts"
output_unit_label.config(text="Watts:") label_result.config(text=f"{result_value:.3f} {result_unit}") except ValueError:
messagebox.showerror("Erro de Entrada", "Por favor, insira um número válido.")
except Exception as e:
messagebox.showerror("Erro", f"Ocorreu um erro: {e}") def set_conversion_mode(mode):
global current_conversion_mode
current_conversion_mode = mode
perform_conversion()
root = tk.Tk()
root.title("Conversor de Potência")
root.geometry("450x300")
root.resizable(False, False)
root.config(bg="#2E4053")
style = ttk.Style()
style.theme_use("clam") style.configure("TLabel",
background="#2E4053",
foreground="#EBF5FB",
font=("Arial", 12))
style.configure("TEntry",
font=("Arial", 12))
style.configure("TButton",
background="#5DADE2",
foreground="white",
font=("Arial", 10, "bold"),
padding=8)
style.map("TButton",
background=[('active', '#3498DB')])
style.configure("TRadiobutton",
background="#2E4053",
foreground="#EBF5FB",
font=("Arial", 10)) title_label = tk.Label(root, text="Conversor de Potência",
font=("Arial", 18, "bold"), bg="#2E4053", fg="#D6EAF8")
title_label.pack(pady=15)
input_frame = tk.Frame(root, bg="#2E4053")
input_frame.pack(pady=10) input_unit_label = ttk.Label(input_frame, text="Valor:")
input_unit_label.pack(side=tk.LEFT, padx=5) entry_input = ttk.Entry(input_frame, width=15)
entry_input.pack(side=tk.LEFT, padx=5)
entry_input.bind("<Return>", lambda event=None: perform_conversion()) # Botão de conversão
convert_button = ttk.Button(root, text="Converter", command=perform_conversion)
convert_button.pack(pady=10) # Frame para o resultado
result_frame = tk.Frame(root, bg="#2E4053")
result_frame.pack(pady=10) output_unit_label = ttk.Label(result_frame, text="CV:")
output_unit_label.pack(side=tk.LEFT, padx=5) label_result = ttk.Label(result_frame, text="0.000 CV", font=("Arial", 14, "bold"))
label_result.pack(side=tk.LEFT, padx=5) mode_frame = tk.Frame(root, bg="#2E4053")
mode_frame.pack(pady=10)
radio_var = tk.StringVar(value="watts_para_cv")
radio_cv = ttk.Radiobutton(mode_frame, text="Watts ↔ CV", variable=radio_var,
value="watts_para_cv", command=lambda: set_conversion_mode("watts_para_cv"))
radio_cv.pack(side=tk.LEFT, padx=10) radio_hp = ttk.Radiobutton(mode_frame, text="Watts ↔ HP", variable=radio_var,
value="watts_para_hp", command=lambda: set_conversion_mode("watts_para_hp"))
radio_hp.pack(side=tk.LEFT, padx=10) root.mainloop()
0