import tkinter as tk
from tkinter import ttk


class Convert_GUI:

    def __init__(self):
        self.root = root = tk.Tk()
        root.title("Feet to Meters")
        self.meters = meters = tk.StringVar()
        self.feet = feet = tk.StringVar()

        mainframe = ttk.Frame(root, padding="3 3 12 12")
        mainframe.grid(column=0, row=0, sticky=(tk.N, tk.S, tk.E, tk.W))
        root.columnconfigure(0, weight=1)
        root.rowconfigure(0, weight=1)

        feet_entry = ttk.Entry(mainframe, width=7, textvariable=feet)
        feet_entry.grid(column=2, row=1, sticky=(tk.E, tk.W))

        lb = ttk.Label(mainframe, textvariable=meters)
        lb.grid(column=2, row=2, sticky=(tk.W, tk.E))
        b = ttk.Button(mainframe, text="Calculate", command=self.calculate)
        b.grid(column=3, row=3, stick=tk.W)

        ttk.Label(mainframe, text="feet").grid(column=3, row=1, sticky=tk.W)
        lb = ttk.Label(mainframe, text="is equivalent to")
        lb.grid(column=1, row=2, sticky=tk.E)
        ttk.Label(mainframe, text="meters").grid(column=3, row=2, sticky=tk.W)

        for child in mainframe.winfo_children():
            child.grid_configure(padx=5, pady=5)

        feet_entry.focus()
        root.bind('<Return>', self.calculate)

    def calculate(self, *evt):
        try:
            value = float(self.feet.get())
            self.meters.set(round(0.3048 * value, 4))
        except ValueError:
            pass

    def run(self):
        self.root.mainloop()


if __name__ == "__main__":
    Convert_GUI().run()
