Hi,

I want to create a little Frame class that has two labels built in, the code snippet below is the class.

class DescriptionFrame(Frame):
    def __init__(self, master, title="", text=""):
        Frame.__init__(master)

        self.title = title
        self.text = text

        self.titleLabel = Label(self, text=self.title, font=("Times", 12, "underline"), fg="darkred")
        self.titleLabel.grid(row=0, column=0, sticky=W)

        self.mainLabel = Message(self, text=self.text, font=("Times", 10), fg="darkgreen")
        self.mainLabel.grid(row=1, column=0, columnspan=1, sticky=EW)

The problem is on line 8, when i try to create the label i get this:

Traceback (most recent call last):
File "C:/Python25/Dialouge1.py", line 34, in __init__
self.titleLabel = Label(self, text=self.title, font=("Times", 12, "underline"), fg="darkred")
File "C:\Python25\lib\lib-tk\Tkinter.py", line 2464, in __init__
Widget.__init__(self, master, 'label', cnf, kw)
File "C:\Python25\lib\lib-tk\Tkinter.py", line 1923, in __init__
BaseWidget._setup(self, master, cnf)
File "C:\Python25\lib\lib-tk\Tkinter.py", line 1901, in _setup
self.tk = master.tk
AttributeError: DescriptionFrame instance has no attribute 'tk'

Now, i was under the opinion that including 'Frame' in brackets after naming the class meant all that 'stuff' (tk attribute for example) was there, and my code would work around it. I'm not too certain where to go from here..

thanks
a1eio

Recommended Answers

All 2 Replies

Actually, you're very close. Line 3 should read

Frame.__init__(self,master)

Jeff

hahahahaha, niice.

thankyou very much, hehe i thought it was probable something simple.

a1eio

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.