'NoneType' 对象没有属性删除

'NoneType' object has no attribute delete

我创建了一个程序,可以根据输入框输入创建引文。我正在尝试添加一个按钮,该按钮在单击时清除所有输入框;但是,我发现错误 'NoneType' object has no attribute delete 发生是因为 none 我的输入框被打包了。当我将 .place() 替换为 .pack() 时,我发现它有效。有什么方法可以使此功能与未填充的输入框一起使用(因为我需要在特定位置使用这些框)?
这是我的代码示例:

from tkinter import *

#create window
win = Tk()
win.geometry("800x500")

#clear function
def clearBoxes():
    author1Input.delete(0,END)

#entry box
author1 = StringVar()
author1Input = Entry(win,textvariable=author1).place(x=30,y=120)

#button to clear
Button(win,text="Clear",command=clearBoxes).place(x=30,y=200)

win.mainloop()
  • 函数 def clearBoxes(): 需要参数,否则 nameInput 未引用任何内容。您应该将 Entry 对象作为参数传递。
  • 无论出于何种原因,在一行中使用 author1Input = Entry(win,textvariable=author1).place(x=30,y=120) 会把事情搞砸。它需要在定义小部件之后放置。比我聪明的人可以解释为什么。

这是完整的解决方案。

from tkinter import *
from functools import partial

#create window
win = Tk()
win.geometry("800x500")

#clear function
def clearBoxes(nameInput):
    nameInput.delete(0,END)

#entry box
author1 = StringVar()
author1Input = Entry(win,textvariable=author1)
author1Input.place(x=30,y=120)

func = partial(clearBoxes, author1Input)

#button to clear
Button(win,text="Clear",command=func).place(x=30,y=200)

win.mainloop()