https://github.com/python/cpython/commit/15f3d7f0efd2c11dcc3734eec5c5db5463a7bd27
commit: 15f3d7f0efd2c11dcc3734eec5c5db5463a7bd27
branch: main
author: Serhiy Storchaka <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2026-10-16T18:17:49+03:00
summary:
gh-159308: Improve the documentation of the Tk option data types in Tkinter
(GH-159309)
Fix inaccurate descriptions of the color, wrap, boolean, bitmap,
callback, font, region and anchor types, and remove the obsolete
"geometry" type: there is no such widget option.
Add the compound, orient, padding and state types.
Fix also several minor errors in the reference.
files:
M Doc/library/tkinter.rst
diff --git a/Doc/library/tkinter.rst b/Doc/library/tkinter.rst
index 47cd7343400aa74..653a91c5cbedba1 100644
--- a/Doc/library/tkinter.rst
+++ b/Doc/library/tkinter.rst
@@ -773,34 +773,76 @@ Tk option data types
Many widget options documented in the reference
accept values of a small number of common types, described here.
+The standard options and their types are described in the
+:manpage:`options(3tk)` manual page.
anchor
Legal values are points of the compass: ``"n"``, ``"ne"``, ``"e"``,
``"se"``,
``"s"``, ``"sw"``, ``"w"``, ``"nw"``, and also ``"center"``.
+ The *labelanchor* option of :class:`LabelFrame` and
+ :class:`ttk.LabelFrame <tkinter.ttk.LabelFrame>`
+ accepts also ``"en"``, ``"es"``, ``"wn"`` and ``"ws"``.
+ The *sticky* option of the grid geometry manager accepts a combination
+ of the compass directions, such as ``"nsew"``, or an empty string.
bitmap
There are ten built-in, named bitmaps: ``'error'``, ``'gray12'``,
``'gray25'``, ``'gray50'``, ``'gray75'``, ``'hourglass'``, ``'info'``,
- ``'questhead'``, ``'question'``, ``'warning'``. To specify an X bitmap
- filename, give the full path to the file, preceded with an ``@``, as in
- ``"@/usr/contrib/bitmap/gumby.bit"``.
+ ``'questhead'``, ``'question'``, ``'warning'``.
+ On macOS the following bitmaps are available as well:
+ ``'application'``, ``'accessory'``, ``'folder'``, ``'pfolder'``,
+ ``'trash'``, ``'floppy'``, ``'ramdisk'``, ``'cdrom'``, ``'preferences'``,
+ ``'querydoc'``, ``'stop'``, ``'note'`` and ``'caution'``.
+ To specify an X bitmap file, give the full path to the file,
+ preceded with an ``@``, as in ``"@/usr/contrib/bitmap/gumby.bit"``.
boolean
- You can pass integers 0 or 1 or the strings ``"yes"`` or ``"no"``.
+ You can pass the integers 0 or 1, ``True`` or ``False``, or the strings
+ ``"0"``, ``"1"``, ``"yes"``, ``"no"``, ``"true"``, ``"false"``, ``"on"``
+ or ``"off"``.
+ The strings are matched ignoring case,
+ and an unambiguous prefix, such as ``"t"``, is enough.
+ Any non-zero integer means true.
callback
- This is any Python function that takes no arguments. For example::
+ This is any callable object.
+ Most callbacks take no arguments. For example::
def print_it():
print("hi there")
fred["command"] = print_it
+ Some options call it with arguments,
+ such as the *command* option of :class:`Scale`,
+ which is called with the new value.
+
color
- Colors can be given as the names of X colors in the rgb.txt file, or as
strings
- representing RGB values in 4 bit: ``"#RGB"``, 8 bit: ``"#RRGGBB"``, 12 bit:
- ``"#RRRGGGBBB"``, or 16 bit: ``"#RRRRGGGGBBBB"`` ranges, where R,G,B here
- represent any legal hex digit. See the :manpage:`colors(3tk)` man page for
- the list of named colors.
+ Colors can be given as symbolic names, such as ``"red"`` or ``"light
blue"``,
+ or as strings representing RGB values in 4 bit: ``"#RGB"``, 8 bit:
+ ``"#RRGGBB"``, 12 bit: ``"#RRRGGGBBB"``, or 16 bit: ``"#RRRRGGGGBBBB"``
+ ranges, where R,G,B here represent any legal hex digit.
+ Tk provides a portable set of symbolic names available on all platforms;
+ they are matched ignoring case and spaces,
+ so ``"light blue"``, ``"Light Blue"`` and ``"lightblue"``
+ are the same color.
+ The full list of names, including the platform-specific names
+ of the current system colors
+ (for example ``"systemButtonFace"`` on Windows
+ or ``"systemWindowBody"`` on macOS),
+ is given in the :manpage:`colors(3tk)` manual page.
+ :meth:`~tkinter.Misc.winfo_rgb` returns
+ the red, green and blue components of a color.
+
+compound
+ Determines how to combine an image and a text displayed in a widget.
+ Legal values are ``"none"`` (display the image if there is one,
+ otherwise the text), ``"text"``, ``"image"``,
+ ``"center"`` (display the text in the center of the image) and
+ ``"top"``, ``"bottom"``, ``"left"``, ``"right"``
+ (display the image above, below, to the left of or to the right
+ of the text).
+ The themed widgets accept all these values,
+ the classic widgets accept all except ``"text"`` and ``"image"``.
cursor
The name of the mouse cursor to display while the pointer is over the
widget.
@@ -836,19 +878,32 @@ font
``(family, size, *styles)`` (or as the equivalent string
``"Courier 10 bold"``). Font sizes with positive numbers are measured in
points; sizes with negative numbers are measured in pixels.
-
-geometry
- This is a string of the form ``widthxheight``, where width and height are
- measured in pixels for most widgets (in characters for widgets displaying
text).
- For example: ``fred["geometry"] = "200x100"``.
+ The name of a named font, such as ``"TkDefaultFont"``,
+ a :class:`tkinter.font.Font` instance,
+ or, on X11, an XLFD font name can be used as well.
justify
Legal values are the strings: ``"left"``, ``"center"``, and ``"right"``.
+orient
+ Legal values are ``"horizontal"`` and ``"vertical"``.
+
+padding
+ This is a legal distance (see above), applied on all sides,
+ or a sequence of up to four distances
+ specifying the left, top, right and bottom padding.
+ If fewer than four are specified,
+ the bottom padding defaults to the top one,
+ the right one to the left one, and the top one to the left one.
+ It is only supported by the themed widgets.
+
region
- This is a string with four space-delimited elements, each of which is a
legal
- distance (see above). For example: ``"2 3 4 5"`` and ``"3i 2i 4.5i 2i"``
and
- ``"3c 2c 4c 10.43c"`` are all legal regions.
+ Used for the *scrollregion* option of :class:`Canvas`.
+ This is a string with four space-delimited elements,
+ each of which is a legal distance (see above),
+ or a sequence of four such elements.
+ For example: ``"2 3 4 5"``, ``(2, 3, 4, 5)``, ``"3i 2i 4.5i 2i"`` and
+ ``"3c 2c 4c 10.43c"`` are all legal regions.
relief
Determines what the border style of a widget will be. Legal values are:
@@ -859,8 +914,19 @@ scrollcommand
This is almost always the :meth:`!set` method of some scrollbar widget, but
can
be any widget method that takes a single argument.
+state
+ Legal values are ``"normal"``, ``"disabled"`` and, depending on the widget,
+ also ``"active"``, ``"hidden"`` (for :class:`Canvas` items)
+ or ``"readonly"`` (for :class:`Entry`, :class:`Spinbox`
+ and the themed widgets).
+ The themed widgets have in addition a more general set of states,
+ which is manipulated with
+ :meth:`ttk.Widget.state <tkinter.ttk.Widget.state>`.
+
wrap
- Must be one of: ``"none"``, ``"char"``, or ``"word"``.
+ Must be one of ``"none"``, ``"char"`` or ``"word"``
+ for the :class:`Text` widget and its tags;
+ for a tag an empty string means to use the widget's value.
.. _Bindings-and-Events:
@@ -1110,7 +1176,7 @@ Base and mixin classes
Interpret the string *s* as a Tcl boolean and return the corresponding
:class:`bool`.
Tcl accepts values such as ``'1'``, ``'0'``, ``'yes'``, ``'no'``,
- ``'true'`` and ``'false'``.
+ ``'true'``, ``'false'``, ``'on'`` and ``'off'``.
Raise :exc:`ValueError` if *s* is not a valid boolean.
.. method:: getdouble(s)
@@ -2143,6 +2209,9 @@ Base and mixin classes
Return the geometry of the widget, in the form ``widthxheight+x+y``.
All dimensions are in pixels.
+ The position is relative to the parent widget;
+ use :meth:`winfo_rootx` and :meth:`winfo_rooty`
+ for the position on the screen.
An offset can be negative; see :meth:`~Wm.geometry`.
.. method:: winfo_height()
@@ -3369,6 +3438,8 @@ Base and mixin classes
Shift the view left or right by *number* units.
*what* is either ``'units'`` or ``'pages'``; a negative *number* scrolls
left and a positive one scrolls right.
+ The :class:`Text` widget accepts also ``'pixels'``,
+ and then *number* can be a screen distance, such as ``'1i'``.
.. class:: YView()
@@ -3399,6 +3470,8 @@ Base and mixin classes
Shift the view up or down by *number* units.
*what* is either ``'units'`` or ``'pages'``; a negative *number* scrolls
up and a positive one scrolls down.
+ The :class:`Text` widget accepts also ``'pixels'``,
+ and then *number* can be a screen distance, such as ``'1i'``.
.. class:: BaseWidget(master, widgetName, cnf={}, kw={}, extra=())
@@ -3828,8 +3901,7 @@ Widget classes
.. note::
- Tk 8.6 added the *angle* option and Tk 9.0 added the *underline*
- option for ``text`` items.
+ Tk 8.6 added the *angle* option for ``text`` items.
.. method:: coords(tagOrId)
coords(tagOrId, coordList, /)
@@ -5226,10 +5298,10 @@ Widget classes
*increment* options, or an explicit list of strings given by the *values*
option (which takes precedence over the range).
Each time an arrow is invoked the *command* callback, if any, is called; the
- *wrap* option controls whether stepping past either end of the range wraps
- around to the other end; the *format* option specifies how numeric values
- are formatted; and the *validate* option enables validation of the entered
- text.
+ boolean *wrap* option controls whether stepping past either end of the range
+ wraps around to the other end;
+ the *format* option specifies how numeric values are formatted;
+ and the *validate* option enables validation of the entered text.
Inherits from :class:`Widget` and :class:`XView`.
With a non-integer *increment*, see :ref:`numeric values and the locale
@@ -5631,7 +5703,7 @@ Widget classes
baseline, for superscripts and subscripts.
*underline*
- Whether to underline the text.
+ Whether to underline the text (a boolean).
*underlinefg*
The color of the underline; it defaults to the text color.
@@ -5789,7 +5861,8 @@ Widget classes
Embed a window (any widget) at *index*.
The options, given in *cnf* and *kw*, include *window* (the widget to
embed), *create* (a callback that creates the widget on demand), *align*,
- *stretch*, *padx* and *pady*.
+ the boolean *stretch* (whether the widget is stretched vertically to the
+ height of the line), *padx* and *pady*.
The embedded widget must be a descendant of the text widget's parent.
.. method:: window_cget(index, option)
@@ -6665,7 +6738,7 @@ Module-level functions
Convert the Tcl boolean string *s* (one of ``'1'``, ``'true'``, ``'yes'``,
``'on'`` and similar, or their false counterparts) to a Python
:class:`bool`.
- Raise :exc:`TclError` for an invalid value.
+ Raise :exc:`ValueError` for an invalid value.
.. function:: getdouble(s)
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]