8000 bpo-42560: simplify/merge architecture info in Tkinter docs by roseman · Pull Request #27839 · python/cpython · GitHub
[go: up one dir, main page]

Skip to content

bpo-42560: simplify/merge architecture info in Tkinter docs #27839

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Aug 23, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 9 additions & 39 deletions Doc/library/tkinter.rst
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ Architecture
------------

Tcl/Tk is not a single library but rather consists of a few distinct
modules, each with a separate functionality and its own official
modules, each with separate functionality and its own official
documentation. Python's binary releases also ship an add-on module
together with it.

Expand Down Expand Up @@ -106,11 +106,14 @@ Ttk
Ttk is distributed as part of Tk, starting with Tk version 8.5. Python
bindings are provided in a separate module, :mod:`tkinter.ttk`.

Tix
`Tix <https://core.tcl.tk/jenglish/gutter/packages/tix.html>`_ is an older
third-party Tcl package, an add-on for Tk that adds several new widgets.
Python bindings are found in the :mod:`tkinter.tix` module.
It's deprecated in favor of Ttk.
Internally, Tk and Ttk use facilities of the underlying operating system,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it worth noting Tk's "draw everything" approach?

i.e., Xlib on Unix/X11, Cocoa on macOS, GDI on Windows.

When your Python application uses a class in Tkinter, e.g., to create a widget,
the :mod:`tkinter` module first assembles a Tcl/Tk command string. It passes that
Tcl command string to an internal :mod:`_tkinter` binary module, which then
calls the Tcl interpreter to evaluate it. The Tcl interpreter will then call into the
Tk and/or Ttk packages, which will in turn make calls to Xlib, Cocoa, or GDI.


Tkinter Modules
Expand Down Expand Up @@ -395,39 +398,6 @@ information on the Form geometry manager. ::
pack .fred -side left =====> fred.pack(side="left")


How Tk and Tkinter are Related
------------------------------

From the top down:

Your App Here (Python)
A Python application makes a :mod:`tkinter` call.

tkinter (Python Package)
This call (say, for example, creating a button widget), is implemented in
the :mod:`tkinter` package, which is written in Python. This Python
function will parse the commands and the arguments and convert them into a
form that makes them look as if they had come from a Tk script instead of
a Python script.

_tkinter (C)
These commands and their arguments will be passed to a C function in the
:mod:`_tkinter` - note the underscore - extension module.

Tk Widgets (C and Tcl)
This C function is able to make calls into other C modules, including the C
functions that make up the Tk library. Tk is implemented in C and some Tcl.
The Tcl part of the Tk widgets is used to bind certain default behaviors to
widgets, and is executed once at the point where the Python :mod:`tkinter`
package is imported. (The user never sees this stage).

Tk (C)
The Tk part of the Tk Widgets implement the final mapping to ...

Xlib (C)
the Xlib library to draw graphics on the screen.


Threading model
---------------

Expand Down
0