from tkinter import * class MetricConverter: def __init__(self): self.conversions = { "cm to inches": lambda x: round(x / 2.54, 2), "m to feet": lambda x: round(x * 3.28084, 2), "km to miles": lambda x: round(x * 0.621371, 2), } self.window = Tk() self.window.title("Metric Conversion Tool") self.main_frame = Frame(self.window, padx=10, pady=10) self.main_frame.grid() self.heading = Label(self.main_frame, text="Metric Conversion Tool", font=("Arial", 16, "bold")) self.heading.grid(row=0) self.instructions = Label(self.main_frame, text="Enter a value and choose conversion type:", wraplength=300, justify="left") self.instructions.grid(row=1) self.input_entry = Entry(self.main_frame, font=("Arial", 14)) self.input_entry.grid(row=2, pady=10) self.selected_conversion = StringVar() self.selected_conversion.set("cm to inches") self.dropdown = OptionMenu(self.main_frame, self.selected_conversion, *self.conversions.keys()) self.dropdown.grid(row=3) self.convert_button = Button(self.main_frame, text="Convert", command=self.convert_value, bg="#004C99", fg="white", font=("Arial", 12, "bold")) self.convert_button.grid(row=4, pady=10) self.result_label = Label(self.main_frame, text="", font=("Arial", 14, "bold")) self.result_label.grid(row=5) self.error_label = Label(self.main_frame, text="", fg="red") self.error_label.grid(row=6) self.window.mainloop() def convert_value(self): value = self.input_entry.get() self.error_label.config(text="") self.result_label.config(text="") try: value = float(value) conversion_type = self.selected_conversion.get() result = self.conversions[conversion_type](value) self.result_label.config(text=f"Result: {result}") except ValueError: self.error_label.config(text="Please enter a valid number.") if __name__ == "__main__": MetricConverter()