From f2041b8aa6a451f8602dc5ee4cd4db838d467519 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Wed, 27 Mar 2002 17:15:57 +0000 Subject: Ignore widgets with unknown names in winfo_children. Fixes #518283. 2.2.2 candidate. --- Lib/lib-tk/Tkinter.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py index 65d8187..f35cbd8 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) -- cgit v0.12