mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
bpo-42630: Improve error reporting in Tkinter for absent default root (GH-23781)
* 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.
This commit is contained in:
parent
1e27b57dbc
commit
3d569fd6dc
19 changed files with 315 additions and 87 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue