Spacetraders/tkinter tutorial/tkinter unit converter.py
2025-10-14 18:31:21 -04:00

67 lines
1.9 KiB
Python

from tkinter import *
from tkinter import ttk
root = Tk()
root.title("Distance conversion")
factors = { #all values are m / x
"m" : 1,
"cm" : 0.01,
"mm" : 0.001,
"km" : 1000,
"au" : 1.496e11,
"ly" : 9.461e15,
"pc" : 3.086e16,
"ft" : 0.3048,
"yd" : 0.9144,
"in" : 0.0254
}
def calculate(*args):
try:
value = float(entry.get())
destUnit = 1/factors[destUnitString.get()]
srcUnit = factors[srcUnitString.get()]
factor = srcUnit*destUnit
out.set(round(value*factor, 4))
except ValueError:
pass
bg = PhotoImage(file="M:\Pictures\hk stream\hornet siitt.png")
im = ttk.Label(root, image=bg)
im.grid(column=0,row=1)
mainframe = ttk.Frame(root, padding=(5,15,5,15))
mainframe.grid(column=0, row=0, sticky=(N,W,E,S))
entry = StringVar()
entryBox = ttk.Entry(mainframe, width=8, textvariable=entry)
entryBox.grid(column=2,row=1, sticky=(W,E))
out = StringVar()
ttk.Label(mainframe, textvariable=out).grid(column=2, row=2, sticky=(W,E))
calcButton = ttk.Button(mainframe, text="Convert", command=calculate)
calcButton.grid(column=3, row=3, sticky=W)
srcUnitString = StringVar()
srcUnitString.set("ft")
srcUnitEntry = ttk.Combobox(mainframe, textvariable=(srcUnitString), values=list(factors.keys()), state="readonly")
srcUnitEntry.grid(column=3, row=1, sticky=W)
ttk.Label(mainframe, text="is equivalent to").grid(column=1, row=2, sticky=E)
destUnitString = StringVar()
destUnitString.set("m")
destUnitEntry = ttk.Combobox(mainframe, textvariable=destUnitString, values=list(factors.keys()), state="readonly")
destUnitEntry.grid(column=3, row=2, sticky=W)
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
mainframe.columnconfigure(2, weight=1)
for child in mainframe.winfo_children():
child.grid_configure(padx=5, pady=5)
entryBox.focus()
root.bind("<Return>", lambda e: calcButton.invoke())
root.mainloop()