user2534039
user2534039

Reputation: 1

Getting Attribute error in Python

Here is my code along with the error message.

from Tkinter import *

class Window01 (Frame):


def __init__(self, master):
Frame.__init__(self)
self.reveal()
self.create_widget()
self.grid()


def create_widget(self):

self.lbl = Label (self, text = "This is a Widget App.")
self.lbl.grid(row =1, column =0, columnspan =2, sticky = W)

self.entbx = Entry(self)
self.entbx.grid(row = 1, column = 1, sticky = W)

self.bttn = Button (self, text = "Widget Button", command = self.reveal)
self.bttn.grid(row = 2, column = 0, sticky = W)

self.txt = Text (self, width =35, height = 5, wrap = WORD)
self.txt.grid(row = 3, column = 0, columnspan =2, sticky = W)

def reveal (self):
contents = self.entbx.get()

if  contents =="magic":
message = "Access Granted"

else:
message = "Denied"
self.txt.delete(0.0, END)
elf.txt.insert(0.0, message)


root = Tk()
root.title ("Widget_Button")
root.geometry ("300x150")
app = Window01 (root)
root.mainloop()

File "C:\PyDev\Py_Widgets101\src\Py_Widget03.py", line 10, in init self.reveal() File "C:\PyDev\Py_Widgets101\src\Py_Widget03.py", line 30, in reveal contents = self.entbx.get() AttributeError: Window01 instance has no attribute 'entbx'

Upvotes: 0

Views: 155

Answers (1)

NPE
NPE

Reputation: 500187

self.entbx is created by create_widget(). You are calling reveal() -- which requires self.entbx -- before you've called create_widget():

self.reveal()
self.create_widget()

Upvotes: 1

Related Questions