I’m having problems with my Tkinter Entry widget.
I’m just testing things out and would like to have my callback print out whatever I typed out in Entry self.a. but I’m getting this error.
File “C:\Python27\lib\lib-tk\Tkinter.py”, line 1410, in call
return self.func(*args) File “C:/Users/Andy/testimage.py”, line 146, in get
print a.get(self) NameError: global name ‘a’ is not defined
I was wondering if someone can tell me what I’m doing wrong. I linked the callback function correctly because if I make it print “aasdfasd” instead, it will print that when I press the button.
def clicked_wbbalance(self):
self.top = Toplevel()
self.top.title("LASKJDF...")
Label(self.top, text="Enter low level").grid(row=0, column=0,padx=10)
Label(self.top, text="Enter high level").grid(row=1, column=0,padx=10)
Label(self.top, text="Values must be between 0 to 255").grid(row=3, column=0)
Button(self.top, text="Ok", command=self.get).grid(row=3, column = 1)
self.a =Entry(self.top).grid(row=0, column=1,padx=10)
self.b =Entry(self.top).grid(row=1, column=1,padx=10)
def get(self):
print self.a.get(self)
As RocketDonkey pointed out, your traceback does not match the code you posted.
Your code as written will generate a traceback like this:
The root problem is that
gridreturnsNone. That means that attributesaandbwill beNonebecause they are assigned the result of calls togrid. Fix that by puting object creation and widget placement on different lines: