有没有一种方法可以删除tkinter中的特定网格元素?

时间:2020-09-15 21:06:10

标签: python tkinter

我正在为学校项目学习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()

程序运行正常,并在按“开始”后打印出数字的平方根,但是每当我输入新的数字并再次按下按钮时,它都会在旧的数字上打印新的值。有没有一种方法可以在打印之前清除网格元素,而无需创建单独的“清除”按钮?

我已经在线检查了,但是找不到解决方法。

1 个答案:

答案 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)