how to fix AttributeError: 'NoneType' object has no attribute 'get' for tkinter entry
it's entry.grid(...) return None
I think you want
from tkinter import *
root = Tk()
a = Entry(root)
a.grid(row = 0, column = 0)
b = Button(root,text = 'CLICK', command= lambda: test()).grid(row = 2, column = 2)
def test():
print(a.get())
root.mainloop()
Error when configuring tkinter widget: 'NoneType' object has no attribute
NoneType object has no attribute ...
means that you have an object that is None
, and you're trying to use an attribute of that object.
In your case you're doing q.get(...)
, so q
must be None
. Since q
is the result of calling nse.get_quote(...)
, that function must have the possibility of returning None
. You'll need to adjust your code to account for that possibility, such as checking the result before trying to use it:
q = nse.get_quote(stock)
if q is not None:
print ...
The root of the problem is likely in how you're reading the file. stock
will include the newline, so you should strip that off before calling nse.get_quote
:
q = nse.get_quote(stock.strip())
Tkinter: AttributeError: NoneType object has no attribute attribute name
The grid
, pack
and place
functions of the Entry
object and of all other widgets returns None
. In python when you do a().b()
, the result of the expression is whatever b()
returns, therefore Entry(...).grid(...)
will return None
.
You should split that on to two lines like this:
entryBox = Entry(root, width=60)
entryBox.grid(row=2, column=1, sticky=W)
That way you get your Entry
reference stored in entryBox
and it's laid out like you expect. This has a bonus side effect of making your layout easier to understand and maintain if you collect all of your grid
and/or pack
statements in blocks.
AttributeError: 'NoneType' object has no attribute 'config'
The issue seems to in this can be traced backed to this line
buLogin = ttk.Button(frame,text="Login").grid(row=2,column=1)
i think the .grid() is not returning anything. can you try like this
buLogin = ttk.Button(frame,text="Login")
buLogin.grid(row=2,column=1)
And ideally you should change all the usage of grid()
like this.
This should work, I havn't tested this yet. please let us know the result.
Happy coding :)
Why is Tkinter widget stored as None? (AttributeError: 'NoneType' object ...)(TypeError: 'NoneType' object ...)
widget
is stored as None
because geometry manager methods grid
, pack
, place
return None
, and thus they should be called on a separate line than the line that creates an instance of the widget as in:
widget = ...
widget.grid(..)
or:
widget = ...
widget.pack(..)
or:
widget = ...
widget.place(..)
And for the 2nd code snippet in the question specifically:
widget = tkinter.Button(...).pack(...)
should be separated to two lines as:
widget = tkinter.Button(...)
widget.pack(...)
Info: This answer is based on, if not for the most parts copied from, this answer.
PYTHON Nonetype object has no attribute .get() tkinter
The .place()
method does not return a reference to the object. It is not a "chaining method". It simply alters the place and returns None
, as is described in the documentation.
You should call the .place()
method after calling the constructor (and setting a reference to the Entry
), like:
userINP = Entry(root, width=25, bg ="White")
userINP.place(x=120,y=100)
userINP.get(...)
Python - tkinter 'AttributeError: 'NoneType' object has no attribute 'xview''
The problem is that grid
returns None
, not self
.
So, when you do this:
decimalView = ttk.Entry(mainframe, state = DISABLED, background = "gray99", width = 30, textvariable = decimal).grid(column = 2, row = 2, sticky = W)
… you're setting decimalView
to None
. Which is why the error message tells you that it can't find an xview
attribute on None
.
And this isn't some weird quirk of Tkinter; almost every method in Python that mutates an object in any way returns None
(or, sometimes, some other useful value—but never self
), from list.sort
to file.write
.
Just write it on two lines: construct the Entry
and assign it to decimalView
, and then grid
it.
Besides the minor benefit of having working code, you'll also have more readable code, that doesn't scroll off the right side of the screen on StackOverflow or most text editors.
NoneType' object has no attribute 'config'
pButton = Button(root, text="Play", command="playButton").grid(row=1)
Here you are creating an object of type Button
, but you are immediately calling the grid
method over it, which returns None
. Thus, pButton
gets assigned None
, and that's why the next row fails.
You should do instead:
pButton = Button(root, text="Play", command="playButton")
pButton.grid(row=1)
pButton.config(image=PlayUp)
i.e. first you create the button and assign it to pButton
, then you do stuff over it.
Related Topics
How to Access the Child Classes of an Object in Django Without Knowing the Name of the Child Class
Convert Pandas Dataframe to Nested JSON
Why Do I Need 'B' to Encode a String with Base64
Python Sharing a Lock Between Processes
How to Extract All the Emojis from Text
How to Choose Cross-Entropy Loss in Tensorflow
Python Socket Receive Large Amount of Data
Reading/Parsing Excel (Xls) Files with Python
List VS Tuple, When to Use Each
What Exactly Is File.Flush() Doing
Read Excel Cell Value and Not the Formula Computing It -Openpyxl
How to Install Psycopg2 with "Pip" on Python
How to Verify If One List Is a Subset of Another
How to Get the Utc Time of "Midnight" for a Given Timezone