Pack parent control in child using control.pack(in_= syntax?

Tim Jones timj at 914fan.net
Sat Jan 31 17:22:39 EST 2004


I've a parent class the generates a menu as in:

self.tm.menu = Menubutton(self.main, relief=RAISED, width=20,
                        bd=0, bg='#ECECEC')
    ...

I can then pack this menu (self.tm) into the current parent
window/frame and it appears as expected.

However, if I call another class - tool_panel(self) and then try to
post the tm menu into a frame (tf) using
    pack(in_=tf, side=RIGHT, anchor=NE) 
- the menu takes up space, but doesn't appear.  I can see this because
when I pack the icon logo without the menu, the logo is centered in
the new frame.  With the menu included, the icon logo is shifted left.

Thoughts or guidance will be greatly appreciated.

Tim

------------

Here's my menu creation code in the parent class:

        self.tm = Menubutton(relief='raised', width=20,
                         bd=0, bg='#ECECEC')
        self.tm.menu = Menu(self.tm, tearoff=0, 
                         title='Tool Option')
        self.tm['menu'] = self.tm.menu

I set up the call to the tool_panel with a call:

        self.tool_panel = tool_panel(self)

Here's the actual tool_panel that I wish to pack into (imported from
another source file called panels.py with 'from panels import *'):

class tool_panel(panel):

    def __init__(self, parent):
        panel.__init__(self, parent)
        tf = Frame(self.main)
        self.parent.tm.pack(in_=tf, side=RIGHT)
        self.logo = PhotoImage(data=images.icon)
        Label(tf, image=self.logo).pack(side=TOP)
        tf.pack(side=BOTTOM, fill=BOTH, expand=1)
        return

    def display(self):
        self.display0()
        return

    pass



More information about the Python-list mailing list