我遇到过这个问题,我无法理解为什么。
我从我的应用程序中获取了代码,并制作了这个测试代码,这样您就不必经历一堆垃圾,看看我在问什么。
我在其他代码中使用此功能。但是在比较了两者之后,我不能为我的生活弄明白这一点。
在这个应用程序中,我收到错误“AttributeError:'NoneType'对象没有属性'delete'”。
import Tkinter as tk
def main():
mainWindow = tk.Tk()
v = tk.StringVar()
entryBox = tk.Entry(mainWindow, textvariable=v).grid(column=0, row=1)
def test():
entryBox.delete(0,20)
testButton = tk.Button(mainWindow, text='Go!', command=test, padx=10).grid(row=2, column=0)
tk.mainloop()
main()
答案 0 :(得分:6)
在这一行:
entryBox = tk.Entry(mainWindow, textvariable=v).grid(column=0, row=1)
网格不返回任何内容,因此entryBox为None
,它没有删除方法。您必须将entryBox
设置为tk.Entry(mainWindow, textvariable=v)
,然后在grid
上调用entryBox
方法
答案 1 :(得分:1)
发生这种情况的原因是因为您在同一个变量中将其网格化。如果您将代码更改为以下代码,则应该有效:
import Tkinter as tk
def main():
mainWindow = tk.Tk()
v = tk.StringVar()
entryBox = tk.Entry(mainWindow, textvariable=v)
def test():
entryBox.delete(0,20)
testButton = tk.Button(mainWindow, text='Go!', command=test, padx=10)
testButton.grid(row=2, column=0)
entryBox.grid(column=0, row=1)
tk.mainloop()
main()
这可行的原因是因为grid()
没有返回任何内容。
答案 2 :(得分:0)
当您尝试拨打entryBox
时,尚未获得此处声明的delete
。如果您想要一种简单的方法来重现错误。
In [1]: x = None
In [2]: x.delete
AttributeError: 'NoneType' object has no attribute 'delete'
要解决此问题,您可以包装entryBox或确保获取它。
if entryBox:
entryBox.delete(0, 20)
答案 3 :(得分:0)
_stringToPath.js
#代替在同一行中使用,您可以这样做
entryBox = tk.Entry(mainWindow, textvariable=v).grid(column=0, row=1)