From 430e7e37be3f00b2a9405006e8a45bcbfe931e2e Mon Sep 17 00:00:00 2001 From: Sakimori Date: Tue, 14 Oct 2025 18:31:21 -0400 Subject: [PATCH] followed brief tutorial --- tkinter tutorial/tkinter unit converter.py | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 tkinter tutorial/tkinter unit converter.py diff --git a/tkinter tutorial/tkinter unit converter.py b/tkinter tutorial/tkinter unit converter.py new file mode 100644 index 0000000..ceabd32 --- /dev/null +++ b/tkinter tutorial/tkinter unit converter.py @@ -0,0 +1,67 @@ +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("", lambda e: calcButton.invoke()) + +root.mainloop() \ No newline at end of file