我正在为学校项目学习tkinter,并且一直在使用以下代码:
import tkinter as tk
def solver(master, e1):
ax= e1.get()
if ax !='':
label = tk.Label(master, text= round(float(ax)**0.5,4))
label.grid(row=0, column=3)
def main():
master = tk.Tk()
tk.Label(master, text="ax").grid(row=0)
e1 = tk.Entry(master)
e1.grid(row=0, column=1)
button1 = tk.Button(master, text='Start', command=lambda : solver(master, e1))
button1.grid(row=12, column= 1)
master.mainloop()
if __name__=="__main__":
main()
程序运行正常,并在按“开始”后打印出数字的平方根,但是每当我输入新的数字并再次按下按钮时,它都会在旧的数字上打印新的值。有没有一种方法可以在打印之前清除网格元素,而无需创建单独的“清除”按钮?
我已经在线检查了,但是找不到解决方法。
答案 0 :(得分:0)
更常见的解决方案是更新现有项目,而不是删除网格项目。这意味着将创建内容移出函数,并使用configure
来更改值。
首先像创建输入一样创建结果标签:
e1 = tk.Entry(master)
result = tk.Label(master, text="", width=10)
e1.grid(row=0, column=1)
result.grid(row=0, column=3)
接下来,将结果标签传递给函数:
button1 = tk.Button(master, text='Start', command=lambda : solver(master, e1, result))
最后,修改您的函数以更新结果标签,而不是创建新的结果标签:
def solver(master, e1, result):
ax = e1.get()
if ax !='':
value = float(ax)**0.5,4
result.configure(text=value)