From: Martin v. Löwis Date: Wed, 27 Mar 2002 17:15:57 +0000 (+0000) Subject: Ignore widgets with unknown names in winfo_children. Fixes #518283. X-Git-Tag: v2.3c1~6305 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f2041b8aa6a451f8602dc5ee4cd4db838d467519;p=python Ignore widgets with unknown names in winfo_children. Fixes #518283. 2.2.2 candidate. --- diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py index 65d81874a3..f35cbd8ae5 100644 --- a/Lib/lib-tk/Tkinter.py +++ b/Lib/lib-tk/Tkinter.py @@ -605,9 +605,17 @@ class Misc: self.tk.call('winfo', 'cells', self._w)) def winfo_children(self): """Return a list of all widgets which are children of this widget.""" - return map(self._nametowidget, - self.tk.splitlist(self.tk.call( - 'winfo', 'children', self._w))) + result = [] + for child in self.tk.splitlist( + self.tk.call('winfo', 'children', self._w)): + try: + # Tcl sometimes returns extra windows, e.g. for + # menus; those need to be skipped + result.append(self._nametowidget(child)) + except KeyError: + pass + return result + def winfo_class(self): """Return window class name of this widget.""" return self.tk.call('winfo', 'class', self._w)