From: Hidetoshi NAGAI Date: 2006-09-05T13:52:17+09:00 Subject: Re: Why does the derived class instance need to be duplicated with TkComposite From: Lionel MAIAUX Subject: Why does the derived class instance need to be duplicated with TkComposite Date: Sat, 2 Sep 2006 00:32:16 +0900 Message-ID: <44F85263.3030406@st.com> > Is there any reason to duplicate the derived class instance when using > TkComposite ? TkComposite is used to create a Mega-widget class which is constructed with some widgets on one frame (a base frame). The module overrides "initialize" method. The new "initialize" creates a new base frame (set it to @frame) and call "initialize_composite" method (anticipates "initialize_composite" constructs all part of the mega-widget). Please imagine a mega-widget which is a text widget with some decoration. Then, because your mega-widget should have properties of a text widget, you will inherit TkText class for your mega-widget class. However, TkComposite#initialize doesn't create a TkText widget. You must construct a text widget and other widgets (to decorate the text widget) on one base frame widget to treat it as one component (You must do that in "initialize_composite" mehtod). Now, all method calls about geometry management (pack, grid, and so on) must be sent to the base frame, and all methods to control the text must be sent to the text widget. @epath and @path instance variables are used for this purpose. @epath keeps the widget path of the base frame, and @path keeps the widget path of the text widget. Methods about geometry management refer @epath, and other methods refer @path. That is the reason of why inherited methods can be sent to the proper widget. And, I think, it will be an answer to your question. -- Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)