Search code examples
pythonobjecttkinterpython-3.5nonetype

Can't get() from Text() object in tkinter (python 3.5)


I'm making an app in tkinter and for some reason I can't call the function 'get()' from an object of the Text() class: I get the error

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

What am I doing wrong? Here is my code:

  1 import tkinter
  2 
  3 
  4 class Main():
  5 
  6     def __init__(self):
  7         #Defining Variables:
  8 
  9         background_color = '#%02x%02x%02x' % (223,219,195)
 10         menubar_color = '#%02x%02x%02x' % (191, 167, 126)
 11         menubar_active = '#AB936A'
 12 
 13         #Creating Window:
 14         root = tkinter.Tk()
 15         root.geometry('1000x600')
 16         root.configure(background=background_color)
 17 
 18         #Menu:
 19         menubar = tkinter.Menu(root,bg=menubar_color,activebackground=menuba    r_active,borderwidth=0,font='quicksand.otf')
 20         menubar.add_command(label='Open',command=self.open_file)
 21         menubar.add_cascade(label='Save')
 22         menubar.add_cascade(label='Save As')
 23         menubar.add_cascade(label='New File')
 24 
 25         root.config(menu=menubar)
 26 
 27         #TextEntry Box:
 28         self.textinput = tkinter.Text().grid(row=0,column=0)
 29         root.mainloop()
 30 
 31     def open_file(self):
 32         text = self.textinput.get()
 33         print(text)
 34 
 35 if __name__ == '__main__':
 36     Main()

Thanks for any help!


Solution

  • Nevermind! I happened to figure it out. Instead of one line saying

    textinput = tkinter.Text().grid(row=0,column=0)
    

    I turned it into two lines saying

    self.textinput = tkinter.Text()
    self.textinput.grid(row=0,column=0)
    

    and instead of

    self.textinput.get()
    

    I used

    self.textinput.get('1.0','end-1c')