diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2020-12-19 14:38:37 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-19 14:38:37 (GMT) |
commit | 80c445cafbdfb16c4a882e3ff6fe28b471aacdfc (patch) | |
tree | c50f6688e6653e3f0a15db5a4bdd805299c2614a /Tools | |
parent | d21d29ab5b8741da056ac09c49c759b6ccbf264a (diff) | |
download | cpython-80c445cafbdfb16c4a882e3ff6fe28b471aacdfc.zip cpython-80c445cafbdfb16c4a882e3ff6fe28b471aacdfc.tar.gz cpython-80c445cafbdfb16c4a882e3ff6fe28b471aacdfc.tar.bz2 |
[3.8] bpo-42630: Improve error reporting in Tkinter for absent default root (GH-23781) (GH-23854)
* Tkinter functions and constructors which need a default root window
raise now RuntimeError with descriptive message instead of obscure
AttributeError or NameError if it is not created yet or cannot
be created automatically.
* Add tests for all functions which use default root window.
* Fix import in the pynche script.
(cherry picked from commit 3d569fd6dccf9f582bafaca04d3535094cae393e)
Diffstat (limited to 'Tools')
-rw-r--r-- | Tools/pynche/PyncheWidget.py | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/Tools/pynche/PyncheWidget.py b/Tools/pynche/PyncheWidget.py index 364f22b..59b4137 100644 --- a/Tools/pynche/PyncheWidget.py +++ b/Tools/pynche/PyncheWidget.py @@ -36,15 +36,11 @@ class PyncheWidget: else: # Is there already a default root for Tk, say because we're # running under Guido's IDE? :-) Two conditions say no, either the - # import fails or _default_root is None. - tkroot = None - try: - from Tkinter import _default_root - tkroot = self.__tkroot = _default_root - except ImportError: - pass + # _default_root is None or it is unset. + tkroot = getattr(tkinter, '_default_root', None) if not tkroot: - tkroot = self.__tkroot = Tk(className='Pynche') + tkroot = Tk(className='Pynche') + self.__tkroot = tkroot # but this isn't our top level widget, so make it invisible tkroot.withdraw() # create the menubar |