[3.9] bpo-42630: Improve error reporting in Tkinter for absent default root (GH-23781) (GH-23853)

* 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 3d569fd6dc)
This commit is contained in:
Serhiy Storchaka 2020-12-19 13:08:07 +02:00 committed by GitHub
parent d458d8dab0
commit 87e7a14ee3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 316 additions and 87 deletions

View file

@ -349,12 +349,7 @@ def setup_master(master=None):
If it is not allowed to use the default root and master is None,
RuntimeError is raised."""
if master is None:
if tkinter._support_default_root:
master = tkinter._default_root or tkinter.Tk()
else:
raise RuntimeError(
"No master specified and tkinter is "
"configured to not support default root")
master = tkinter._get_default_root()
return master