63 lines
1.8 KiB
Python
63 lines
1.8 KiB
Python
|
from tkinter import *
|
||
|
from tkinter import ttk
|
||
|
|
||
|
def calculate(*args):
|
||
|
try:
|
||
|
stringvalue = feet.get()
|
||
|
stringvalue = stringvalue.replace(",",".")
|
||
|
value = float(stringvalue)
|
||
|
m_value = 0.3048 * value
|
||
|
m_value = round(m_value, 2)
|
||
|
meters.set(m_value)
|
||
|
except ValueError:
|
||
|
pass
|
||
|
return True
|
||
|
|
||
|
# Hauptfenster
|
||
|
root = Tk()
|
||
|
root.title("Feet to Meters")
|
||
|
|
||
|
# Rahmen im Hauptfenster (aus ttk für Farbanpassung)
|
||
|
mainframe = ttk.Frame(root, padding = "3 3 12 12")
|
||
|
|
||
|
mainframe.grid(column = 0, row = 0, sticky = (N,W,E,S))
|
||
|
root.columnconfigure(0, weight = 1)
|
||
|
root.rowconfigure(0, weight = 1)
|
||
|
|
||
|
# Eingabefeld für Länge in feet
|
||
|
feet = StringVar()
|
||
|
feet_entry = ttk.Entry(mainframe, width = 7, textvariable = feet)
|
||
|
feet_entry.grid(column = 2, row = 1, sticky = (W, E))
|
||
|
|
||
|
# Einheit-Label für Eingabefeld der Länge in feet
|
||
|
ttk.Label(mainframe, text = "feet").grid(column = 3, row = 1, sticky = W)
|
||
|
|
||
|
# Label für Ausgabefeld der Länge in Metern
|
||
|
ttk.Label(mainframe, text = "ist äquivalent zu").grid(column = 1, row = 2, sticky = E)
|
||
|
|
||
|
# Einheit-Label für Ausgabefeld der Länge in Metern
|
||
|
ttk.Label(mainframe, text = "Meter").grid(column = 3, row = 2, sticky = W)
|
||
|
|
||
|
# Ausgabefeld für Länge in Metern
|
||
|
meters = StringVar()
|
||
|
meters_entry = ttk.Entry(mainframe, width = 7, textvariable = meters)
|
||
|
meters_entry.grid(column = 2, row = 2, sticky = (W,E))
|
||
|
meters_entry.configure(state = 'disabled') # keine Eingabe, aber selektierbar
|
||
|
|
||
|
# Button für Berechnung
|
||
|
|
||
|
button_calc = ttk.Button(mainframe, text = "Berechne", command = calculate)
|
||
|
button_calc.grid(column = 3, row = 3, sticky = W)
|
||
|
|
||
|
# schönere Abstände
|
||
|
for child in mainframe.winfo_children():
|
||
|
child.grid_configure(padx = 5, pady = 5)
|
||
|
|
||
|
# Setze Fokus in Eingabefeld
|
||
|
feet_entry.focus()
|
||
|
|
||
|
root.bind("<Return>", calculate)
|
||
|
root.bind("<KP_Enter>", calculate)
|
||
|
|
||
|
root.mainloop()
|