diff --git a/Lib/lib-tk/ttk.py b/Lib/lib-tk/ttk.py index 1125439..61f1785 100644 --- a/Lib/lib-tk/ttk.py +++ b/Lib/lib-tk/ttk.py @@ -1515,13 +1519,31 @@ class LabeledScale(Frame, object): def destroy(self): """Destroy this widget and possibly its associated variable.""" try: - self._variable.trace_vdelete('w', self.__tracecb) + label = self.label except AttributeError: + pass + else: + label.destroy() + del self.label + + try: + scale = self.scale + except AttributeError: + pass + else: + scale.destroy() + del self.scale + + try: + variable = self._variable + except AttributeError as exc: # widget has been destroyed already pass else: + variable.trace_vdelete('w', self.__tracecb) del self._variable - Frame.destroy(self) + + Frame.destroy(self) def _adjust(self, *args): @@ -1620,5 +1642,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)