我正在制作一个单位转换器,用户可以在其中自由选择他想要的单位并进行转换 我正在制作温度单位(摄氏度、开尔文和华氏度)的转换器,但我偶然发现了一个错误,即使我试图删除它们,标签也会被覆盖
这里是处理这个的函数:
# 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()
如您所见,我一直在尝试“answer.forget”,以便忘记标签,然后每次使用转换器按钮时都会重写,但是,却发生了这种情况:
答案 0 :(得分:1)
总体思路是构建一次布局并根据需要更改值,如下所示:
import tkinter as tk
class MainApplication(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
self.count = 0
self.label = tk.Label(self, text="Click the button!")
self.label.pack()
self.some_button = tk.Button(self, text="Click", command=self.some)
self.some_button.pack()
self.close_button = tk.Button(self, text="Close", command=self.quit)
self.close_button.pack()
def some(self):
self.count += 1
self.label["text"] = f"You clicked {self.count} times."
if __name__ == "__main__":
root = tk.Tk()
MainApplication(root).pack(side="top", fill="both", expand=True)
root.mainloop()
因此,当您点击 Convert
按钮时,您应该在您的应用中调用一个函数,并在其中读取您需要的值和设置,并使用新结果更新标签内的文本。< /p>
This 回答解释了如何使用 OOP 方法构建您的应用程序,我认为随着您的应用程序的发展,这非常有用。
干杯!