From fed9b914b5469ba36c30c0e6ab9cde441c2431a9 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 25 Jun 1999 16:09:27 +0000 Subject: [PATCH] Extend _close() to break cycles. Break some other cycles too (and destroy the root when done). --- Tools/idle/PyShell.py | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/Tools/idle/PyShell.py b/Tools/idle/PyShell.py index a618ad1cbb7..90f9b2c5858 100644 --- a/Tools/idle/PyShell.py +++ b/Tools/idle/PyShell.py @@ -363,12 +363,13 @@ class PyShell(OutputWindow): # Helper for ModifiedInterpreter self.resetoutput() self.executing = 1 - self._cancel_check = self.cancel_check + ##self._cancel_check = self.cancel_check ##sys.settrace(self._cancel_check) def endexecuting(self): # Helper for ModifiedInterpreter - sys.settrace(None) + ##sys.settrace(None) + ##self._cancel_check = None self.executing = 0 self.canceled = 0 @@ -386,17 +387,20 @@ class PyShell(OutputWindow): if self.reading: self.top.quit() return "cancel" - reply = PyShellEditorWindow.close(self) - if reply != "cancel": - self.flist.pyshell = None - # Restore std streams - sys.stdout = self.save_stdout - sys.stderr = self.save_stderr - sys.stdin = self.save_stdin - # Break cycles - self.interp = None - self.console = None - return reply + return PyShellEditorWindow.close(self) + + def _close(self): + # Restore std streams + sys.stdout = self.save_stdout + sys.stderr = self.save_stderr + sys.stdin = self.save_stdin + # Break cycles + self.interp = None + self.console = None + self.auto = None + self.flist.pyshell = None + self.history = None + OutputWindow._close(self) # Really EditorWindow._close def ispythonsource(self, filename): # Override this so EditorWindow never removes the colorizer @@ -731,6 +735,7 @@ def main(): shell.begin() root.mainloop() + root.destroy() if __name__ == "__main__":