Search code examples
pythontkinternonetype

AttributeError: 'NoneType' object has no attribute 'delete'


I have run into this issue and I can't understand why.

I took my code from my application and made this test code so you don't have to go through a bunch of junk to see what I am asking.

I have this working in other code. But after comparing the two, I can't for the life of me figure this out.

In this application, I get the error "AttributeError: 'NoneType' object has no attribute '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()

Solution

  • In this line:

    entryBox = tk.Entry(mainWindow, textvariable=v).grid(column=0, row=1)
    

    grid doesn't return anything, so entryBox is None, which doesn't have a delete method. You have to set entryBox to tk.Entry(mainWindow, textvariable=v) then call the grid method on entryBox