>>> import sys >>> sys.version '2.4.1 (#65, Mar 30 2005, 09:13:57) [MSC v.1310 32 bit (Intel)]' >>> import Tix >>> import Tkinter >>> root = Tix.Tk() >>> root.tk.eval('package require Tix') '8.1.8.4' >>> root.tk.eval('package require Tcl') '8.4' >>> pw = Tix.PanedWindow(root) >>> pw.pack(fill='both') >>> pane1 = pw.add('pane1') >>> pane2 = pw.add('pane2') >>> pane1 >>> pane2 >>> pw.panes() Traceback (most recent call last): File "", line 1, in ? File "C:\Python24\Lib\lib-tk\Tix.py", line 1244, in panes ret.append(self.subwidget(x)) File "C:\Python24\Lib\lib-tk\Tix.py", line 337, in subwidget raise TclError, "Subwidget " + name + " not child of " + self._name _tkinter.TclError: Subwidget p not child of 9953192 Documentation on Tix.* is sorely lacking, referring instead to the Tk documentation, which says: > pathName panes > Returns a list of the names of all panes. The culprit appears to be the following code in Tix.py: > def panes(self): > names = self.tk.call(self._w, 'panes') > ret = [] > for x in names: > ret.append(self.subwidget(x)) > return ret This does not properly split the names list: >>> pane3 = pw.add('pane2 pane3') >>> pw.tk.call(pw._w,'panes') 'pane1 pane2 {pane2 pane3}' The fix appears to be replacing "names = self.tk.call(self._w, 'panes')" with "names = self.tk.split(self.tk.call(self._w, 'panes'))"