summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2017-08-09 08:48:11 (GMT)
committerGitHub <noreply@github.com>2017-08-09 08:48:11 (GMT)
commit33460fa7e0bd126bee739a66e1228665dc22e70f (patch)
tree4d4f8e3e931b165ffb6309b9acbb5cc3a61567a5 /Lib
parente93135dbb265e801c0000a19cd9c5428d57d1cf4 (diff)
downloadcpython-33460fa7e0bd126bee739a66e1228665dc22e70f.zip
cpython-33460fa7e0bd126bee739a66e1228665dc22e70f.tar.gz
cpython-33460fa7e0bd126bee739a66e1228665dc22e70f.tar.bz2
ttk: fix LabeledScale and OptionMenu destroy() method (#3025) (#3030)
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. (cherry picked from commit cd7e9c1b67d3d07ee03e0a79af2791c19031cecb)
Diffstat (limited to 'Lib')
-rw-r--r--Lib/tkinter/ttk.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/Lib/tkinter/ttk.py b/Lib/tkinter/ttk.py
index 9cd0c20..2a3e1ce 100644
--- a/Lib/tkinter/ttk.py
+++ b/Lib/tkinter/ttk.py
@@ -1543,11 +1543,12 @@ class LabeledScale(Frame):
try:
self._variable.trace_vdelete('w', self.__tracecb)
except AttributeError:
- # widget has been destroyed already
pass
else:
del self._variable
- Frame.destroy(self)
+ super().destroy()
+ self.label = None
+ self.scale = None
def _adjust(self, *args):
@@ -1647,5 +1648,8 @@ class OptionMenu(Menubutton):
def destroy(self):
"""Destroy this widget and its associated variable."""
- del self._variable
- Menubutton.destroy(self)
+ try:
+ del self._variable
+ except AttributeError:
+ pass
+ super().destroy()