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.
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.
tkinter label does not respond to button
Declare the label and it's grid separately
Sign = Label()
Sign.grid()
See the type of
Label(). grid ()
It is None because grid method returns none and you assign it to sign.
So,
sign = none
And none has no attribute called config. That's why the error occurs
Also remove master,
from the def tryout():
section or else there will be a '_tkinter.TclError: unknown option' error.
Thanks, C Vith, for debugging the code (Also remove ..... error) Suggested by C Vith
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()
Global variable process
You can't use a single line to initialize and layout a widget. You have to put that on 2 lines, like this:
labelP = Label(mainframe, text = np.array(A[1,0]), width=5, font = 'Arial 10 bold')
labelP.grid(column=2, row=5, sticky=W)
Related Topics
Assigning String with Boolean Expression
Removing Horizontal Lines in Image (Opencv, Python, Matplotlib)
How to Remove Leading and Trailing Zeros in a String? Python
How to Normalize a Url in Python
For Loops and Iterating Through Lists
Error: Pg_Config Executable Not Found When Installing Psycopg2 on Alpine in Docker
Accessing the List While Being Sorted
Trouble Installing Textblob with Pip
Python CSV.Reader: How to Return to the Top of the File
Is There a Module for Balanced Binary Tree in Python's Standard Library
Text Box with Line Wrapping in Matplotlib
Typeerror: Cannot Create a Consistent Method Resolution Order (Mro)
Is Everything Greater Than None
How to Do N-D Distance and Nearest Neighbor Calculations on Numpy Arrays