Tkinter 条目在运行时无法删除

Tkinter entry cant be deleted when in function

当条目是由另一个函数创建时,我很难通过一个函数删除内容。

def recipe_add():
recepty_add_window = Toplevel()
recepty_add_window.geometry("400x400")

name_entry_label=Label(recepty_add_window, text="Name:").grid(row=1,column=0)
name_entry = Entry(recepty_add_window, width = 50, textvariable=name_var).grid(row=1, column=1,padx=5)

b_add = Button(recepty_add_window, text="Add recipe", width=50, command=add_recipe).grid(row=6, columnspan=2, pady=5, padx = 5)

add_recipe里面有name_entry.delete函数

    def add_recipe():

name_entry.delete(0,END)

我收到:NameError:名称 'name_entry' 未定义。

我试图使 name_entry 全局化或将 Toplevel 更改为“单个 window 应用程序”,方法是忘记网格的所有内容并将其重新放在那里,但似乎没有任何帮助。谢谢大家的帮助。

您需要在定义全局变量的地方声明全局变量,而不是在使用它的地方声明。还有,.grid()returnsNone,所以先要把Entry存入变量,然后调用grid():

from tkinter import *
def recipe_add():
    global name_entry
    name_var = StringVar()
    name_entry = Entry(recepty_add_window, width = 50, textvariable=name_var)
    name_entry.grid(row=1, column=1,padx=5)

def add_recipe():
    name_entry.delete(0,END)