From 56e162ad5c5d3effe9b4f05d0179e1b6a2a2d9b8 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 8 Aug 2017 19:15:52 +0200 Subject: [PATCH] ttk: fix LabeledScale and OptionMenu destroy() method (#3026) bpo-31135: Call the parent destroy() method even if the used attribute doesn't exist. The LabeledScale.destroy() method now also explicitly clears label and scale attributes to help the garbage collector to destroy all widgets. --- Lib/lib-tk/ttk.py | 9 +++++++-- .../Library/2017-08-08-14-59-26.bpo-31135.9q1QdB.rst | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2017-08-08-14-59-26.bpo-31135.9q1QdB.rst diff --git a/Lib/lib-tk/ttk.py b/Lib/lib-tk/ttk.py index 11254391c0f5..77c93b12ae75 100644 --- a/Lib/lib-tk/ttk.py +++ b/Lib/lib-tk/ttk.py @@ -1521,7 +1521,9 @@ class LabeledScale(Frame, object): pass else: del self._variable - Frame.destroy(self) + Frame.destroy(self) + self.label = None + self.scale = None def _adjust(self, *args): @@ -1620,5 +1622,8 @@ class OptionMenu(Menubutton): def destroy(self): """Destroy this widget and its associated variable.""" - del self._variable + try: + del self._variable + except AttributeError: + pass Menubutton.destroy(self) diff --git a/Misc/NEWS.d/next/Library/2017-08-08-14-59-26.bpo-31135.9q1QdB.rst b/Misc/NEWS.d/next/Library/2017-08-08-14-59-26.bpo-31135.9q1QdB.rst new file mode 100644 index 000000000000..4d89633e126c --- /dev/null +++ b/Misc/NEWS.d/next/Library/2017-08-08-14-59-26.bpo-31135.9q1QdB.rst @@ -0,0 +1,4 @@ +ttk: Fix LabeledScale and OptionMenu destroy() method. Call the parent +destroy() method even if the used attribute doesn't exist. The +LabeledScale.destroy() method now also explicitly clears label and scale +attributes to help the garbage collector to destroy all widgets. -- 2.47.3