fix tkinter master attributes #4468
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
All tkinter widgets have a master attribute. Tk is the only widget whose master attribute can be None (and Tk's master is always None). This is because of the way master widgets work in Tcl/Tk: a widget whose name in Tcl is
.foo.barhas a master named.foo, and the master of.foois the root widget named., corresponding to an instance oftkinter.Tk.You can also try running this to see the master attributes:
To verify that the stubs are correct, replace all prints with
reveal_typeand then mypying.If something can be any widget, then the correct type for it is
Misc, and that's why there's now amasterattribute inMiscas well. So,if some_misc_instance.master is Noneis equivalent to (but more readable than)if isinstance(some_misc_instance, tkinter.Tk).