I am making a unit converter, in which the user can freely choose the units he wants and convert them.
I was making the converter for temperature units(Celsius, Kelvin and Fahrenheit), and I stumbled across an error in which the Label
widgets are getting overwritten even though I'm trying to delete them.
Heres the function which deals with this:
# Phase 2
def phase_2():
# The Subphases
# Temp
def temprature():
mega.forget()
heading = Label(root, text="Temprature", padx=40, pady=15, relief=SUNKEN)
heading.pack()
frameps = LabelFrame(root)
frameps.pack(padx=10, pady=10)
def conversion():
# Answer Box
answer = LabelFrame(frameps, padx=10)
answer.grid(row=3, column=4, columnspan=1, padx=20, pady=20)
empty = Label(answer, text="Value")
empty.grid(row=0, column=0)
# C functions
def C_F():
empty = Label(answer, text=f"{(int(val.get()) * (9 / 5)) + 32}°F")
empty.grid(row=0, column=0)
def C_K():
empty = Label(answer, text=f"{int(val.get()) + 273.15}°K")
empty.grid(row=0, column=0)
def C_C():
empty = Label(answer, text=f"{int(val.get())}°C")
empty.grid(row=0, column=0)
# F functions
def F_C():
empty = Label(answer, text=f"{(int(val.get()) - 32) * 5/9}°C")
empty.grid(row=0, column=0)
def F_K():
empty = Label(answer, text=f"{(int(val.get()) - 32) * 5/9 + 273.15}°K")
empty.grid(row=0, column=0)
def F_F():
empty = Label(answer, text=f"{int(val.get())}°F")
empty.grid(row=0, column=0)
# K functions
def K_F():
empty = Label(answer, text=f"{(int(val.get()) - 273.15) * 9/5 + 32}°F")
empty.grid(row=0, column=0)
def K_C():
empty = Label(answer, text=f"{int(val.get()) - 273.15}°C")
empty.grid(row=0, column=0)
def K_K():
empty = Label(answer, text=f"{int(val.get())}°K")
empty.grid(row=0, column=0)
# C probs
if unit.get() == "C" and u.get() == "F":
answer.forget()
C_F()
if unit.get() == "C" and u.get() == "K":
answer.forget()
C_K()
if unit.get() == "C" and u.get() == "C":
answer.forget()
C_C()
# F probs
if unit.get() == "F" and u.get() == "C":
answer.forget()
F_C()
if unit.get() == "F" and u.get() == "K":
answer.forget()
F_K()
if unit.get() == "F" and u.get() == "F":
answer.forget()
F_F()
# K probs
if unit.get() == "K" and u.get() == "F":
answer.forget()
K_F()
if unit.get() == "K" and u.get() == "C":
answer.forget()
K_C()
if unit.get() == "K" and u.get() == "K":
answer.forget()
K_K()
as you can see, i keep trying 'answer.forget' so that the label is forgotten, and then rewritten every time that i use the converter button, but instead, this happens: