17db96d56Sopenharmony_ci:mod:`tkinter.ttk` --- Tk themed widgets
27db96d56Sopenharmony_ci========================================
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ci.. module:: tkinter.ttk
57db96d56Sopenharmony_ci   :synopsis: Tk themed widget set
67db96d56Sopenharmony_ci
77db96d56Sopenharmony_ci.. sectionauthor:: Guilherme Polo <ggpolo@gmail.com>
87db96d56Sopenharmony_ci
97db96d56Sopenharmony_ci**Source code:** :source:`Lib/tkinter/ttk.py`
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ci.. index:: single: ttk
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_ci--------------
147db96d56Sopenharmony_ci
157db96d56Sopenharmony_ciThe :mod:`tkinter.ttk` module provides access to the Tk themed widget set,
167db96d56Sopenharmony_ciintroduced in Tk 8.5. It provides additional benefits including anti-aliased font
177db96d56Sopenharmony_cirendering under X11 and window transparency (requiring a composition
187db96d56Sopenharmony_ciwindow manager on X11).
197db96d56Sopenharmony_ci
207db96d56Sopenharmony_ciThe basic idea for :mod:`tkinter.ttk` is to separate, to the extent possible,
217db96d56Sopenharmony_cithe code implementing a widget's behavior from the code implementing its
227db96d56Sopenharmony_ciappearance.
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci
257db96d56Sopenharmony_ci.. seealso::
267db96d56Sopenharmony_ci
277db96d56Sopenharmony_ci   `Tk Widget Styling Support <https://core.tcl.tk/tips/doc/trunk/tip/48.md>`_
287db96d56Sopenharmony_ci      A document introducing theming support for Tk
297db96d56Sopenharmony_ci
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ciUsing Ttk
327db96d56Sopenharmony_ci---------
337db96d56Sopenharmony_ci
347db96d56Sopenharmony_ciTo start using Ttk, import its module::
357db96d56Sopenharmony_ci
367db96d56Sopenharmony_ci   from tkinter import ttk
377db96d56Sopenharmony_ci
387db96d56Sopenharmony_ciTo override the basic Tk widgets, the import should follow the Tk import::
397db96d56Sopenharmony_ci
407db96d56Sopenharmony_ci   from tkinter import *
417db96d56Sopenharmony_ci   from tkinter.ttk import *
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_ciThat code causes several :mod:`tkinter.ttk` widgets (:class:`Button`,
447db96d56Sopenharmony_ci:class:`Checkbutton`, :class:`Entry`, :class:`Frame`, :class:`Label`,
457db96d56Sopenharmony_ci:class:`LabelFrame`, :class:`Menubutton`, :class:`PanedWindow`,
467db96d56Sopenharmony_ci:class:`Radiobutton`, :class:`Scale` and :class:`Scrollbar`) to
477db96d56Sopenharmony_ciautomatically replace the Tk widgets.
487db96d56Sopenharmony_ci
497db96d56Sopenharmony_ciThis has the direct benefit of using the new widgets which gives a better
507db96d56Sopenharmony_cilook and feel across platforms; however, the replacement widgets are not
517db96d56Sopenharmony_cicompletely compatible. The main difference is that widget options such as
527db96d56Sopenharmony_ci"fg", "bg" and others related to widget styling are no
537db96d56Sopenharmony_cilonger present in Ttk widgets.  Instead, use  the :class:`ttk.Style` class
547db96d56Sopenharmony_cifor improved styling effects.
557db96d56Sopenharmony_ci
567db96d56Sopenharmony_ci
577db96d56Sopenharmony_ci.. seealso::
587db96d56Sopenharmony_ci
597db96d56Sopenharmony_ci   `Converting existing applications to use Tile widgets <https://tktable.sourceforge.net/tile/doc/converting.txt>`_
607db96d56Sopenharmony_ci     A monograph (using Tcl terminology) about differences typically
617db96d56Sopenharmony_ci     encountered when moving applications to use the new widgets.
627db96d56Sopenharmony_ci
637db96d56Sopenharmony_ci
647db96d56Sopenharmony_ciTtk Widgets
657db96d56Sopenharmony_ci-----------
667db96d56Sopenharmony_ci
677db96d56Sopenharmony_ciTtk comes with 18 widgets, twelve of which already existed in tkinter:
687db96d56Sopenharmony_ci:class:`Button`, :class:`Checkbutton`, :class:`Entry`, :class:`Frame`,
697db96d56Sopenharmony_ci:class:`Label`, :class:`LabelFrame`, :class:`Menubutton`, :class:`PanedWindow`,
707db96d56Sopenharmony_ci:class:`Radiobutton`, :class:`Scale`, :class:`Scrollbar`, and :class:`Spinbox`.
717db96d56Sopenharmony_ciThe other six are new: :class:`Combobox`, :class:`Notebook`,
727db96d56Sopenharmony_ci:class:`Progressbar`, :class:`Separator`, :class:`Sizegrip` and
737db96d56Sopenharmony_ci:class:`Treeview`. And all them are subclasses of :class:`Widget`.
747db96d56Sopenharmony_ci
757db96d56Sopenharmony_ciUsing the Ttk widgets gives the application an improved look and feel.
767db96d56Sopenharmony_ciAs discussed above, there are differences in how the styling is coded.
777db96d56Sopenharmony_ci
787db96d56Sopenharmony_ciTk code::
797db96d56Sopenharmony_ci
807db96d56Sopenharmony_ci   l1 = tkinter.Label(text="Test", fg="black", bg="white")
817db96d56Sopenharmony_ci   l2 = tkinter.Label(text="Test", fg="black", bg="white")
827db96d56Sopenharmony_ci
837db96d56Sopenharmony_ci
847db96d56Sopenharmony_ciTtk code::
857db96d56Sopenharmony_ci
867db96d56Sopenharmony_ci   style = ttk.Style()
877db96d56Sopenharmony_ci   style.configure("BW.TLabel", foreground="black", background="white")
887db96d56Sopenharmony_ci
897db96d56Sopenharmony_ci   l1 = ttk.Label(text="Test", style="BW.TLabel")
907db96d56Sopenharmony_ci   l2 = ttk.Label(text="Test", style="BW.TLabel")
917db96d56Sopenharmony_ci
927db96d56Sopenharmony_ciFor more information about TtkStyling_, see the :class:`Style` class
937db96d56Sopenharmony_cidocumentation.
947db96d56Sopenharmony_ci
957db96d56Sopenharmony_ciWidget
967db96d56Sopenharmony_ci------
977db96d56Sopenharmony_ci
987db96d56Sopenharmony_ci:class:`ttk.Widget` defines standard options and methods supported by Tk
997db96d56Sopenharmony_cithemed widgets and is not supposed to be directly instantiated.
1007db96d56Sopenharmony_ci
1017db96d56Sopenharmony_ci
1027db96d56Sopenharmony_ciStandard Options
1037db96d56Sopenharmony_ci^^^^^^^^^^^^^^^^
1047db96d56Sopenharmony_ci
1057db96d56Sopenharmony_ciAll the :mod:`ttk` Widgets accepts the following options:
1067db96d56Sopenharmony_ci
1077db96d56Sopenharmony_ci   .. tabularcolumns:: |l|L|
1087db96d56Sopenharmony_ci
1097db96d56Sopenharmony_ci   +-----------+--------------------------------------------------------------+
1107db96d56Sopenharmony_ci   | Option    | Description                                                  |
1117db96d56Sopenharmony_ci   +===========+==============================================================+
1127db96d56Sopenharmony_ci   | class     | Specifies the window class. The class is used when querying  |
1137db96d56Sopenharmony_ci   |           | the option database for the window's other options, to       |
1147db96d56Sopenharmony_ci   |           | determine the default bindtags for the window, and to select |
1157db96d56Sopenharmony_ci   |           | the widget's default layout and style. This option is        |
1167db96d56Sopenharmony_ci   |           | read-only, and may only be specified when the window is      |
1177db96d56Sopenharmony_ci   |           | created.                                                     |
1187db96d56Sopenharmony_ci   +-----------+--------------------------------------------------------------+
1197db96d56Sopenharmony_ci   | cursor    | Specifies the mouse cursor to be used for the widget. If set |
1207db96d56Sopenharmony_ci   |           | to the empty string (the default), the cursor is inherited   |
1217db96d56Sopenharmony_ci   |           | for the parent widget.                                       |
1227db96d56Sopenharmony_ci   +-----------+--------------------------------------------------------------+
1237db96d56Sopenharmony_ci   | takefocus | Determines whether the window accepts the focus during       |
1247db96d56Sopenharmony_ci   |           | keyboard traversal. 0, 1 or an empty string is returned.     |
1257db96d56Sopenharmony_ci   |           | If 0 is returned, it means that the window should be skipped |
1267db96d56Sopenharmony_ci   |           | entirely during keyboard traversal. If 1, it means that the  |
1277db96d56Sopenharmony_ci   |           | window should receive the input focus as long as it is       |
1287db96d56Sopenharmony_ci   |           | viewable. And an empty string means that the traversal       |
1297db96d56Sopenharmony_ci   |           | scripts make the decision about whether or not to focus      |
1307db96d56Sopenharmony_ci   |           | on the window.                                               |
1317db96d56Sopenharmony_ci   +-----------+--------------------------------------------------------------+
1327db96d56Sopenharmony_ci   | style     | May be used to specify a custom widget style.                |
1337db96d56Sopenharmony_ci   +-----------+--------------------------------------------------------------+
1347db96d56Sopenharmony_ci
1357db96d56Sopenharmony_ci
1367db96d56Sopenharmony_ciScrollable Widget Options
1377db96d56Sopenharmony_ci^^^^^^^^^^^^^^^^^^^^^^^^^
1387db96d56Sopenharmony_ci
1397db96d56Sopenharmony_ciThe following options are supported by widgets that are controlled by a
1407db96d56Sopenharmony_ciscrollbar.
1417db96d56Sopenharmony_ci
1427db96d56Sopenharmony_ci   .. tabularcolumns:: |l|L|
1437db96d56Sopenharmony_ci
1447db96d56Sopenharmony_ci   +----------------+---------------------------------------------------------+
1457db96d56Sopenharmony_ci   | Option         | Description                                             |
1467db96d56Sopenharmony_ci   +================+=========================================================+
1477db96d56Sopenharmony_ci   | xscrollcommand | Used to communicate with horizontal scrollbars.         |
1487db96d56Sopenharmony_ci   |                |                                                         |
1497db96d56Sopenharmony_ci   |                | When the view in the widget's window change, the widget |
1507db96d56Sopenharmony_ci   |                | will generate a Tcl command based on the scrollcommand. |
1517db96d56Sopenharmony_ci   |                |                                                         |
1527db96d56Sopenharmony_ci   |                | Usually this option consists of the method              |
1537db96d56Sopenharmony_ci   |                | :meth:`Scrollbar.set` of some scrollbar. This will cause|
1547db96d56Sopenharmony_ci   |                | the scrollbar to be updated whenever the view in the    |
1557db96d56Sopenharmony_ci   |                | window changes.                                         |
1567db96d56Sopenharmony_ci   +----------------+---------------------------------------------------------+
1577db96d56Sopenharmony_ci   | yscrollcommand | Used to communicate with vertical scrollbars.           |
1587db96d56Sopenharmony_ci   |                | For some more information, see above.                   |
1597db96d56Sopenharmony_ci   +----------------+---------------------------------------------------------+
1607db96d56Sopenharmony_ci
1617db96d56Sopenharmony_ci
1627db96d56Sopenharmony_ciLabel Options
1637db96d56Sopenharmony_ci^^^^^^^^^^^^^
1647db96d56Sopenharmony_ci
1657db96d56Sopenharmony_ciThe following options are supported by labels, buttons and other button-like
1667db96d56Sopenharmony_ciwidgets.
1677db96d56Sopenharmony_ci
1687db96d56Sopenharmony_ci   .. tabularcolumns:: |l|p{0.7\linewidth}|
1697db96d56Sopenharmony_ci
1707db96d56Sopenharmony_ci   +--------------+-----------------------------------------------------------+
1717db96d56Sopenharmony_ci   | Option       | Description                                               |
1727db96d56Sopenharmony_ci   +==============+===========================================================+
1737db96d56Sopenharmony_ci   | text         | Specifies a text string to be displayed inside the widget.|
1747db96d56Sopenharmony_ci   +--------------+-----------------------------------------------------------+
1757db96d56Sopenharmony_ci   | textvariable | Specifies a name whose value will be used in place of the |
1767db96d56Sopenharmony_ci   |              | text option resource.                                     |
1777db96d56Sopenharmony_ci   +--------------+-----------------------------------------------------------+
1787db96d56Sopenharmony_ci   | underline    | If set, specifies the index (0-based) of a character to   |
1797db96d56Sopenharmony_ci   |              | underline in the text string. The underline character is  |
1807db96d56Sopenharmony_ci   |              | used for mnemonic activation.                             |
1817db96d56Sopenharmony_ci   +--------------+-----------------------------------------------------------+
1827db96d56Sopenharmony_ci   | image        | Specifies an image to display. This is a list of 1 or more|
1837db96d56Sopenharmony_ci   |              | elements. The first element is the default image name. The|
1847db96d56Sopenharmony_ci   |              | rest of the list if a sequence of statespec/value pairs as|
1857db96d56Sopenharmony_ci   |              | defined by :meth:`Style.map`, specifying different images |
1867db96d56Sopenharmony_ci   |              | to use when the widget is in a particular state or a      |
1877db96d56Sopenharmony_ci   |              | combination of states. All images in the list should have |
1887db96d56Sopenharmony_ci   |              | the same size.                                            |
1897db96d56Sopenharmony_ci   +--------------+-----------------------------------------------------------+
1907db96d56Sopenharmony_ci   | compound     | Specifies how to display the image relative to the text,  |
1917db96d56Sopenharmony_ci   |              | in the case both text and images options are present.     |
1927db96d56Sopenharmony_ci   |              | Valid values are:                                         |
1937db96d56Sopenharmony_ci   |              |                                                           |
1947db96d56Sopenharmony_ci   |              | * text: display text only                                 |
1957db96d56Sopenharmony_ci   |              | * image: display image only                               |
1967db96d56Sopenharmony_ci   |              | * top, bottom, left, right: display image above, below,   |
1977db96d56Sopenharmony_ci   |              |   left of, or right of the text, respectively.            |
1987db96d56Sopenharmony_ci   |              | * none: the default. display the image if present,        |
1997db96d56Sopenharmony_ci   |              |   otherwise the text.                                     |
2007db96d56Sopenharmony_ci   +--------------+-----------------------------------------------------------+
2017db96d56Sopenharmony_ci   | width        | If greater than zero, specifies how much space, in        |
2027db96d56Sopenharmony_ci   |              | character widths, to allocate for the text label, if less |
2037db96d56Sopenharmony_ci   |              | than zero, specifies a minimum width. If zero or          |
2047db96d56Sopenharmony_ci   |              | unspecified, the natural width of the text label is used. |
2057db96d56Sopenharmony_ci   +--------------+-----------------------------------------------------------+
2067db96d56Sopenharmony_ci
2077db96d56Sopenharmony_ci
2087db96d56Sopenharmony_ciCompatibility Options
2097db96d56Sopenharmony_ci^^^^^^^^^^^^^^^^^^^^^
2107db96d56Sopenharmony_ci
2117db96d56Sopenharmony_ci   .. tabularcolumns:: |l|L|
2127db96d56Sopenharmony_ci
2137db96d56Sopenharmony_ci   +--------+----------------------------------------------------------------+
2147db96d56Sopenharmony_ci   | Option | Description                                                    |
2157db96d56Sopenharmony_ci   +========+================================================================+
2167db96d56Sopenharmony_ci   | state  | May be set to "normal" or "disabled" to control the "disabled" |
2177db96d56Sopenharmony_ci   |        | state bit. This is a write-only option: setting it changes the |
2187db96d56Sopenharmony_ci   |        | widget state, but the :meth:`Widget.state` method does not     |
2197db96d56Sopenharmony_ci   |        | affect this option.                                            |
2207db96d56Sopenharmony_ci   +--------+----------------------------------------------------------------+
2217db96d56Sopenharmony_ci
2227db96d56Sopenharmony_ciWidget States
2237db96d56Sopenharmony_ci^^^^^^^^^^^^^
2247db96d56Sopenharmony_ci
2257db96d56Sopenharmony_ciThe widget state is a bitmap of independent state flags.
2267db96d56Sopenharmony_ci
2277db96d56Sopenharmony_ci   .. tabularcolumns:: |l|L|
2287db96d56Sopenharmony_ci
2297db96d56Sopenharmony_ci   +------------+-------------------------------------------------------------+
2307db96d56Sopenharmony_ci   | Flag       | Description                                                 |
2317db96d56Sopenharmony_ci   +============+=============================================================+
2327db96d56Sopenharmony_ci   | active     | The mouse cursor is over the widget and pressing a mouse    |
2337db96d56Sopenharmony_ci   |            | button will cause some action to occur                      |
2347db96d56Sopenharmony_ci   +------------+-------------------------------------------------------------+
2357db96d56Sopenharmony_ci   | disabled   | Widget is disabled under program control                    |
2367db96d56Sopenharmony_ci   +------------+-------------------------------------------------------------+
2377db96d56Sopenharmony_ci   | focus      | Widget has keyboard focus                                   |
2387db96d56Sopenharmony_ci   +------------+-------------------------------------------------------------+
2397db96d56Sopenharmony_ci   | pressed    | Widget is being pressed                                     |
2407db96d56Sopenharmony_ci   +------------+-------------------------------------------------------------+
2417db96d56Sopenharmony_ci   | selected   | "On", "true", or "current" for things like Checkbuttons and |
2427db96d56Sopenharmony_ci   |            | radiobuttons                                                |
2437db96d56Sopenharmony_ci   +------------+-------------------------------------------------------------+
2447db96d56Sopenharmony_ci   | background | Windows and Mac have a notion of an "active" or foreground  |
2457db96d56Sopenharmony_ci   |            | window. The *background* state is set for widgets in a      |
2467db96d56Sopenharmony_ci   |            | background window, and cleared for those in the foreground  |
2477db96d56Sopenharmony_ci   |            | window                                                      |
2487db96d56Sopenharmony_ci   +------------+-------------------------------------------------------------+
2497db96d56Sopenharmony_ci   | readonly   | Widget should not allow user modification                   |
2507db96d56Sopenharmony_ci   +------------+-------------------------------------------------------------+
2517db96d56Sopenharmony_ci   | alternate  | A widget-specific alternate display format                  |
2527db96d56Sopenharmony_ci   +------------+-------------------------------------------------------------+
2537db96d56Sopenharmony_ci   | invalid    | The widget's value is invalid                               |
2547db96d56Sopenharmony_ci   +------------+-------------------------------------------------------------+
2557db96d56Sopenharmony_ci
2567db96d56Sopenharmony_ciA state specification is a sequence of state names, optionally prefixed with
2577db96d56Sopenharmony_cian exclamation point indicating that the bit is off.
2587db96d56Sopenharmony_ci
2597db96d56Sopenharmony_ci
2607db96d56Sopenharmony_cittk.Widget
2617db96d56Sopenharmony_ci^^^^^^^^^^
2627db96d56Sopenharmony_ci
2637db96d56Sopenharmony_ciBesides the methods described below, the :class:`ttk.Widget` supports the
2647db96d56Sopenharmony_cimethods :meth:`tkinter.Widget.cget` and :meth:`tkinter.Widget.configure`.
2657db96d56Sopenharmony_ci
2667db96d56Sopenharmony_ci.. class:: Widget
2677db96d56Sopenharmony_ci
2687db96d56Sopenharmony_ci   .. method:: identify(x, y)
2697db96d56Sopenharmony_ci
2707db96d56Sopenharmony_ci      Returns the name of the element at position *x* *y*, or the empty string
2717db96d56Sopenharmony_ci      if the point does not lie within any element.
2727db96d56Sopenharmony_ci
2737db96d56Sopenharmony_ci      *x* and *y* are pixel coordinates relative to the widget.
2747db96d56Sopenharmony_ci
2757db96d56Sopenharmony_ci
2767db96d56Sopenharmony_ci   .. method:: instate(statespec, callback=None, *args, **kw)
2777db96d56Sopenharmony_ci
2787db96d56Sopenharmony_ci      Test the widget's state. If a callback is not specified, returns ``True``
2797db96d56Sopenharmony_ci      if the widget state matches *statespec* and ``False`` otherwise. If callback
2807db96d56Sopenharmony_ci      is specified then it is called with args if widget state matches
2817db96d56Sopenharmony_ci      *statespec*.
2827db96d56Sopenharmony_ci
2837db96d56Sopenharmony_ci
2847db96d56Sopenharmony_ci   .. method:: state(statespec=None)
2857db96d56Sopenharmony_ci
2867db96d56Sopenharmony_ci      Modify or inquire widget state. If *statespec* is specified, sets the
2877db96d56Sopenharmony_ci      widget state according to it and return a new *statespec* indicating
2887db96d56Sopenharmony_ci      which flags were changed. If *statespec* is not specified, returns
2897db96d56Sopenharmony_ci      the currently enabled state flags.
2907db96d56Sopenharmony_ci
2917db96d56Sopenharmony_ci   *statespec* will usually be a list or a tuple.
2927db96d56Sopenharmony_ci
2937db96d56Sopenharmony_ci
2947db96d56Sopenharmony_ciCombobox
2957db96d56Sopenharmony_ci--------
2967db96d56Sopenharmony_ci
2977db96d56Sopenharmony_ciThe :class:`ttk.Combobox` widget combines a text field with a pop-down list of
2987db96d56Sopenharmony_civalues. This widget is a subclass of :class:`Entry`.
2997db96d56Sopenharmony_ci
3007db96d56Sopenharmony_ciBesides the methods inherited from :class:`Widget`: :meth:`Widget.cget`,
3017db96d56Sopenharmony_ci:meth:`Widget.configure`, :meth:`Widget.identify`, :meth:`Widget.instate`
3027db96d56Sopenharmony_ciand :meth:`Widget.state`, and the following inherited from :class:`Entry`:
3037db96d56Sopenharmony_ci:meth:`Entry.bbox`, :meth:`Entry.delete`, :meth:`Entry.icursor`,
3047db96d56Sopenharmony_ci:meth:`Entry.index`, :meth:`Entry.insert`, :meth:`Entry.selection`,
3057db96d56Sopenharmony_ci:meth:`Entry.xview`, it has some other methods, described at
3067db96d56Sopenharmony_ci:class:`ttk.Combobox`.
3077db96d56Sopenharmony_ci
3087db96d56Sopenharmony_ci
3097db96d56Sopenharmony_ciOptions
3107db96d56Sopenharmony_ci^^^^^^^
3117db96d56Sopenharmony_ci
3127db96d56Sopenharmony_ciThis widget accepts the following specific options:
3137db96d56Sopenharmony_ci
3147db96d56Sopenharmony_ci   .. tabularcolumns:: |l|L|
3157db96d56Sopenharmony_ci
3167db96d56Sopenharmony_ci   +-----------------+--------------------------------------------------------+
3177db96d56Sopenharmony_ci   | Option          | Description                                            |
3187db96d56Sopenharmony_ci   +=================+========================================================+
3197db96d56Sopenharmony_ci   | exportselection | Boolean value. If set, the widget selection is linked  |
3207db96d56Sopenharmony_ci   |                 | to the Window Manager selection (which can be returned |
3217db96d56Sopenharmony_ci   |                 | by invoking Misc.selection_get, for example).          |
3227db96d56Sopenharmony_ci   +-----------------+--------------------------------------------------------+
3237db96d56Sopenharmony_ci   | justify         | Specifies how the text is aligned within the widget.   |
3247db96d56Sopenharmony_ci   |                 | One of "left", "center", or "right".                   |
3257db96d56Sopenharmony_ci   +-----------------+--------------------------------------------------------+
3267db96d56Sopenharmony_ci   | height          | Specifies the height of the pop-down listbox, in rows. |
3277db96d56Sopenharmony_ci   +-----------------+--------------------------------------------------------+
3287db96d56Sopenharmony_ci   | postcommand     | A script (possibly registered with Misc.register) that |
3297db96d56Sopenharmony_ci   |                 | is called immediately before displaying the values. It |
3307db96d56Sopenharmony_ci   |                 | may specify which values to display.                   |
3317db96d56Sopenharmony_ci   +-----------------+--------------------------------------------------------+
3327db96d56Sopenharmony_ci   | state           | One of "normal", "readonly", or "disabled". In the     |
3337db96d56Sopenharmony_ci   |                 | "readonly" state, the value may not be edited directly,|
3347db96d56Sopenharmony_ci   |                 | and the user can only selection of the values from the |
3357db96d56Sopenharmony_ci   |                 | dropdown list. In the "normal" state, the text field is|
3367db96d56Sopenharmony_ci   |                 | directly editable. In the "disabled" state, no         |
3377db96d56Sopenharmony_ci   |                 | interaction is possible.                               |
3387db96d56Sopenharmony_ci   +-----------------+--------------------------------------------------------+
3397db96d56Sopenharmony_ci   | textvariable    | Specifies a name whose value is linked to the widget   |
3407db96d56Sopenharmony_ci   |                 | value. Whenever the value associated with that name    |
3417db96d56Sopenharmony_ci   |                 | changes, the widget value is updated, and vice versa.  |
3427db96d56Sopenharmony_ci   |                 | See :class:`tkinter.StringVar`.                        |
3437db96d56Sopenharmony_ci   +-----------------+--------------------------------------------------------+
3447db96d56Sopenharmony_ci   | values          | Specifies the list of values to display in the         |
3457db96d56Sopenharmony_ci   |                 | drop-down listbox.                                     |
3467db96d56Sopenharmony_ci   +-----------------+--------------------------------------------------------+
3477db96d56Sopenharmony_ci   | width           | Specifies an integer value indicating the desired width|
3487db96d56Sopenharmony_ci   |                 | of the entry window, in average-size characters of the |
3497db96d56Sopenharmony_ci   |                 | widget's font.                                         |
3507db96d56Sopenharmony_ci   +-----------------+--------------------------------------------------------+
3517db96d56Sopenharmony_ci
3527db96d56Sopenharmony_ci
3537db96d56Sopenharmony_ciVirtual events
3547db96d56Sopenharmony_ci^^^^^^^^^^^^^^
3557db96d56Sopenharmony_ci
3567db96d56Sopenharmony_ciThe combobox widgets generates a **<<ComboboxSelected>>** virtual event
3577db96d56Sopenharmony_ciwhen the user selects an element from the list of values.
3587db96d56Sopenharmony_ci
3597db96d56Sopenharmony_ci
3607db96d56Sopenharmony_cittk.Combobox
3617db96d56Sopenharmony_ci^^^^^^^^^^^^
3627db96d56Sopenharmony_ci
3637db96d56Sopenharmony_ci.. class:: Combobox
3647db96d56Sopenharmony_ci
3657db96d56Sopenharmony_ci   .. method:: current(newindex=None)
3667db96d56Sopenharmony_ci
3677db96d56Sopenharmony_ci      If *newindex* is specified, sets the combobox value to the element
3687db96d56Sopenharmony_ci      position *newindex*. Otherwise, returns the index of the current value or
3697db96d56Sopenharmony_ci      -1 if the current value is not in the values list.
3707db96d56Sopenharmony_ci
3717db96d56Sopenharmony_ci
3727db96d56Sopenharmony_ci   .. method:: get()
3737db96d56Sopenharmony_ci
3747db96d56Sopenharmony_ci      Returns the current value of the combobox.
3757db96d56Sopenharmony_ci
3767db96d56Sopenharmony_ci
3777db96d56Sopenharmony_ci   .. method:: set(value)
3787db96d56Sopenharmony_ci
3797db96d56Sopenharmony_ci      Sets the value of the combobox to *value*.
3807db96d56Sopenharmony_ci
3817db96d56Sopenharmony_ci
3827db96d56Sopenharmony_ciSpinbox
3837db96d56Sopenharmony_ci-------
3847db96d56Sopenharmony_ciThe :class:`ttk.Spinbox` widget is a :class:`ttk.Entry` enhanced with increment
3857db96d56Sopenharmony_ciand decrement arrows.  It can be used for numbers or lists of string values.
3867db96d56Sopenharmony_ciThis widget is a subclass of :class:`Entry`.
3877db96d56Sopenharmony_ci
3887db96d56Sopenharmony_ciBesides the methods inherited from :class:`Widget`: :meth:`Widget.cget`,
3897db96d56Sopenharmony_ci:meth:`Widget.configure`, :meth:`Widget.identify`, :meth:`Widget.instate`
3907db96d56Sopenharmony_ciand :meth:`Widget.state`, and the following inherited from :class:`Entry`:
3917db96d56Sopenharmony_ci:meth:`Entry.bbox`, :meth:`Entry.delete`, :meth:`Entry.icursor`,
3927db96d56Sopenharmony_ci:meth:`Entry.index`, :meth:`Entry.insert`, :meth:`Entry.xview`,
3937db96d56Sopenharmony_ciit has some other methods, described at :class:`ttk.Spinbox`.
3947db96d56Sopenharmony_ci
3957db96d56Sopenharmony_ciOptions
3967db96d56Sopenharmony_ci^^^^^^^
3977db96d56Sopenharmony_ci
3987db96d56Sopenharmony_ciThis widget accepts the following specific options:
3997db96d56Sopenharmony_ci
4007db96d56Sopenharmony_ci  .. tabularcolumns:: |l|L|
4017db96d56Sopenharmony_ci
4027db96d56Sopenharmony_ci+----------------------+------------------------------------------------------+
4037db96d56Sopenharmony_ci| Option               | Description                                          |
4047db96d56Sopenharmony_ci+======================+======================================================+
4057db96d56Sopenharmony_ci| from                 | Float value.  If set, this is the minimum value to   |
4067db96d56Sopenharmony_ci|                      | which the decrement button will decrement.  Must be  |
4077db96d56Sopenharmony_ci|                      | spelled as ``from_`` when used as an argument, since |
4087db96d56Sopenharmony_ci|                      | ``from`` is a Python keyword.                        |
4097db96d56Sopenharmony_ci+----------------------+------------------------------------------------------+
4107db96d56Sopenharmony_ci| to                   | Float value.  If set, this is the maximum value to   |
4117db96d56Sopenharmony_ci|                      | which the increment button will increment.           |
4127db96d56Sopenharmony_ci+----------------------+------------------------------------------------------+
4137db96d56Sopenharmony_ci| increment            | Float value.  Specifies the amount which the         |
4147db96d56Sopenharmony_ci|                      | increment/decrement buttons change the               |
4157db96d56Sopenharmony_ci|                      | value. Defaults to 1.0.                              |
4167db96d56Sopenharmony_ci+----------------------+------------------------------------------------------+
4177db96d56Sopenharmony_ci| values               | Sequence of string or float values.  If specified,   |
4187db96d56Sopenharmony_ci|                      | the increment/decrement buttons will cycle through   |
4197db96d56Sopenharmony_ci|                      | the items in this sequence rather than incrementing  |
4207db96d56Sopenharmony_ci|                      | or decrementing numbers.                             |
4217db96d56Sopenharmony_ci|                      |                                                      |
4227db96d56Sopenharmony_ci+----------------------+------------------------------------------------------+
4237db96d56Sopenharmony_ci| wrap                 | Boolean value.  If ``True``, increment and decrement |
4247db96d56Sopenharmony_ci|                      | buttons will cycle from the ``to`` value to the      |
4257db96d56Sopenharmony_ci|                      | ``from`` value or the ``from`` value to the ``to``   |
4267db96d56Sopenharmony_ci|                      | value, respectively.                                 |
4277db96d56Sopenharmony_ci+----------------------+------------------------------------------------------+
4287db96d56Sopenharmony_ci| format               | String value.  This specifies the format of numbers  |
4297db96d56Sopenharmony_ci|                      | set by the increment/decrement buttons.  It must be  |
4307db96d56Sopenharmony_ci|                      | in the form "%W.Pf", where W is the padded width of  |
4317db96d56Sopenharmony_ci|                      | the value, P is the precision, and '%' and 'f' are   |
4327db96d56Sopenharmony_ci|                      | literal.                                             |
4337db96d56Sopenharmony_ci+----------------------+------------------------------------------------------+
4347db96d56Sopenharmony_ci| command              | Python callable.  Will be called with no arguments   |
4357db96d56Sopenharmony_ci|                      | whenever either of the increment or decrement buttons|
4367db96d56Sopenharmony_ci|                      | are pressed.                                         |
4377db96d56Sopenharmony_ci|                      |                                                      |
4387db96d56Sopenharmony_ci+----------------------+------------------------------------------------------+
4397db96d56Sopenharmony_ci
4407db96d56Sopenharmony_ci
4417db96d56Sopenharmony_ciVirtual events
4427db96d56Sopenharmony_ci^^^^^^^^^^^^^^
4437db96d56Sopenharmony_ci
4447db96d56Sopenharmony_ciThe spinbox widget generates an **<<Increment>>** virtual event when the
4457db96d56Sopenharmony_ciuser presses <Up>, and a **<<Decrement>>** virtual event when the user
4467db96d56Sopenharmony_cipresses <Down>.
4477db96d56Sopenharmony_ci
4487db96d56Sopenharmony_cittk.Spinbox
4497db96d56Sopenharmony_ci^^^^^^^^^^^^
4507db96d56Sopenharmony_ci
4517db96d56Sopenharmony_ci.. class:: Spinbox
4527db96d56Sopenharmony_ci
4537db96d56Sopenharmony_ci   .. method:: get()
4547db96d56Sopenharmony_ci
4557db96d56Sopenharmony_ci      Returns the current value of the spinbox.
4567db96d56Sopenharmony_ci
4577db96d56Sopenharmony_ci
4587db96d56Sopenharmony_ci   .. method:: set(value)
4597db96d56Sopenharmony_ci
4607db96d56Sopenharmony_ci      Sets the value of the spinbox to *value*.
4617db96d56Sopenharmony_ci
4627db96d56Sopenharmony_ci
4637db96d56Sopenharmony_ciNotebook
4647db96d56Sopenharmony_ci--------
4657db96d56Sopenharmony_ci
4667db96d56Sopenharmony_ciTtk Notebook widget manages a collection of windows and displays a single
4677db96d56Sopenharmony_cione at a time. Each child window is associated with a tab, which the user
4687db96d56Sopenharmony_cimay select to change the currently displayed window.
4697db96d56Sopenharmony_ci
4707db96d56Sopenharmony_ci
4717db96d56Sopenharmony_ciOptions
4727db96d56Sopenharmony_ci^^^^^^^
4737db96d56Sopenharmony_ci
4747db96d56Sopenharmony_ciThis widget accepts the following specific options:
4757db96d56Sopenharmony_ci
4767db96d56Sopenharmony_ci   .. tabularcolumns:: |l|L|
4777db96d56Sopenharmony_ci
4787db96d56Sopenharmony_ci   +---------+----------------------------------------------------------------+
4797db96d56Sopenharmony_ci   | Option  | Description                                                    |
4807db96d56Sopenharmony_ci   +=========+================================================================+
4817db96d56Sopenharmony_ci   | height  | If present and greater than zero, specifies the desired height |
4827db96d56Sopenharmony_ci   |         | of the pane area (not including internal padding or tabs).     |
4837db96d56Sopenharmony_ci   |         | Otherwise, the maximum height of all panes is used.            |
4847db96d56Sopenharmony_ci   +---------+----------------------------------------------------------------+
4857db96d56Sopenharmony_ci   | padding | Specifies the amount of extra space to add around the outside  |
4867db96d56Sopenharmony_ci   |         | of the notebook. The padding is a list up to four length       |
4877db96d56Sopenharmony_ci   |         | specifications left top right bottom. If fewer than four       |
4887db96d56Sopenharmony_ci   |         | elements are specified, bottom defaults to top, right defaults |
4897db96d56Sopenharmony_ci   |         | to left, and top defaults to left.                             |
4907db96d56Sopenharmony_ci   +---------+----------------------------------------------------------------+
4917db96d56Sopenharmony_ci   | width   | If present and greater than zero, specified the desired width  |
4927db96d56Sopenharmony_ci   |         | of the pane area (not including internal padding). Otherwise,  |
4937db96d56Sopenharmony_ci   |         | the maximum width of all panes is used.                        |
4947db96d56Sopenharmony_ci   +---------+----------------------------------------------------------------+
4957db96d56Sopenharmony_ci
4967db96d56Sopenharmony_ci
4977db96d56Sopenharmony_ciTab Options
4987db96d56Sopenharmony_ci^^^^^^^^^^^
4997db96d56Sopenharmony_ci
5007db96d56Sopenharmony_ciThere are also specific options for tabs:
5017db96d56Sopenharmony_ci
5027db96d56Sopenharmony_ci   .. tabularcolumns:: |l|L|
5037db96d56Sopenharmony_ci
5047db96d56Sopenharmony_ci   +-----------+--------------------------------------------------------------+
5057db96d56Sopenharmony_ci   | Option    | Description                                                  |
5067db96d56Sopenharmony_ci   +===========+==============================================================+
5077db96d56Sopenharmony_ci   | state     | Either "normal", "disabled" or "hidden". If "disabled", then |
5087db96d56Sopenharmony_ci   |           | the tab is not selectable. If "hidden", then the tab is not  |
5097db96d56Sopenharmony_ci   |           | shown.                                                       |
5107db96d56Sopenharmony_ci   +-----------+--------------------------------------------------------------+
5117db96d56Sopenharmony_ci   | sticky    | Specifies how the child window is positioned within the pane |
5127db96d56Sopenharmony_ci   |           | area. Value is a string containing zero or more of the       |
5137db96d56Sopenharmony_ci   |           | characters "n", "s", "e" or "w". Each letter refers to a     |
5147db96d56Sopenharmony_ci   |           | side (north, south, east or west) that the child window will |
5157db96d56Sopenharmony_ci   |           | stick to, as per the :meth:`grid` geometry manager.          |
5167db96d56Sopenharmony_ci   +-----------+--------------------------------------------------------------+
5177db96d56Sopenharmony_ci   | padding   | Specifies the amount of extra space to add between the       |
5187db96d56Sopenharmony_ci   |           | notebook and this pane. Syntax is the same as for the option |
5197db96d56Sopenharmony_ci   |           | padding used by this widget.                                 |
5207db96d56Sopenharmony_ci   +-----------+--------------------------------------------------------------+
5217db96d56Sopenharmony_ci   | text      | Specifies a text to be displayed in the tab.                 |
5227db96d56Sopenharmony_ci   +-----------+--------------------------------------------------------------+
5237db96d56Sopenharmony_ci   | image     | Specifies an image to display in the tab. See the option     |
5247db96d56Sopenharmony_ci   |           | image described in :class:`Widget`.                          |
5257db96d56Sopenharmony_ci   +-----------+--------------------------------------------------------------+
5267db96d56Sopenharmony_ci   | compound  | Specifies how to display the image relative to the text, in  |
5277db96d56Sopenharmony_ci   |           | the case both options text and image are present. See        |
5287db96d56Sopenharmony_ci   |           | `Label Options`_ for legal values.                           |
5297db96d56Sopenharmony_ci   +-----------+--------------------------------------------------------------+
5307db96d56Sopenharmony_ci   | underline | Specifies the index (0-based) of a character to underline in |
5317db96d56Sopenharmony_ci   |           | the text string. The underlined character is used for        |
5327db96d56Sopenharmony_ci   |           | mnemonic activation if :meth:`Notebook.enable_traversal` is  |
5337db96d56Sopenharmony_ci   |           | called.                                                      |
5347db96d56Sopenharmony_ci   +-----------+--------------------------------------------------------------+
5357db96d56Sopenharmony_ci
5367db96d56Sopenharmony_ci
5377db96d56Sopenharmony_ciTab Identifiers
5387db96d56Sopenharmony_ci^^^^^^^^^^^^^^^
5397db96d56Sopenharmony_ci
5407db96d56Sopenharmony_ciThe tab_id present in several methods of :class:`ttk.Notebook` may take any
5417db96d56Sopenharmony_ciof the following forms:
5427db96d56Sopenharmony_ci
5437db96d56Sopenharmony_ci* An integer between zero and the number of tabs
5447db96d56Sopenharmony_ci* The name of a child window
5457db96d56Sopenharmony_ci* A positional specification of the form "@x,y", which identifies the tab
5467db96d56Sopenharmony_ci* The literal string "current", which identifies the currently selected tab
5477db96d56Sopenharmony_ci* The literal string "end", which returns the number of tabs (only valid for
5487db96d56Sopenharmony_ci  :meth:`Notebook.index`)
5497db96d56Sopenharmony_ci
5507db96d56Sopenharmony_ci
5517db96d56Sopenharmony_ciVirtual Events
5527db96d56Sopenharmony_ci^^^^^^^^^^^^^^
5537db96d56Sopenharmony_ci
5547db96d56Sopenharmony_ciThis widget generates a **<<NotebookTabChanged>>** virtual event after a new
5557db96d56Sopenharmony_citab is selected.
5567db96d56Sopenharmony_ci
5577db96d56Sopenharmony_ci
5587db96d56Sopenharmony_cittk.Notebook
5597db96d56Sopenharmony_ci^^^^^^^^^^^^
5607db96d56Sopenharmony_ci
5617db96d56Sopenharmony_ci.. class:: Notebook
5627db96d56Sopenharmony_ci
5637db96d56Sopenharmony_ci   .. method:: add(child, **kw)
5647db96d56Sopenharmony_ci
5657db96d56Sopenharmony_ci      Adds a new tab to the notebook.
5667db96d56Sopenharmony_ci
5677db96d56Sopenharmony_ci      If window is currently managed by the notebook but hidden, it is
5687db96d56Sopenharmony_ci      restored to its previous position.
5697db96d56Sopenharmony_ci
5707db96d56Sopenharmony_ci      See `Tab Options`_ for the list of available options.
5717db96d56Sopenharmony_ci
5727db96d56Sopenharmony_ci
5737db96d56Sopenharmony_ci   .. method:: forget(tab_id)
5747db96d56Sopenharmony_ci
5757db96d56Sopenharmony_ci      Removes the tab specified by *tab_id*, unmaps and unmanages the
5767db96d56Sopenharmony_ci      associated window.
5777db96d56Sopenharmony_ci
5787db96d56Sopenharmony_ci
5797db96d56Sopenharmony_ci   .. method:: hide(tab_id)
5807db96d56Sopenharmony_ci
5817db96d56Sopenharmony_ci      Hides the tab specified by *tab_id*.
5827db96d56Sopenharmony_ci
5837db96d56Sopenharmony_ci      The tab will not be displayed, but the associated window remains
5847db96d56Sopenharmony_ci      managed by the notebook and its configuration remembered. Hidden tabs
5857db96d56Sopenharmony_ci      may be restored with the :meth:`add` command.
5867db96d56Sopenharmony_ci
5877db96d56Sopenharmony_ci
5887db96d56Sopenharmony_ci   .. method:: identify(x, y)
5897db96d56Sopenharmony_ci
5907db96d56Sopenharmony_ci      Returns the name of the tab element at position *x*, *y*, or the empty
5917db96d56Sopenharmony_ci      string if none.
5927db96d56Sopenharmony_ci
5937db96d56Sopenharmony_ci
5947db96d56Sopenharmony_ci   .. method:: index(tab_id)
5957db96d56Sopenharmony_ci
5967db96d56Sopenharmony_ci      Returns the numeric index of the tab specified by *tab_id*, or the total
5977db96d56Sopenharmony_ci      number of tabs if *tab_id* is the string "end".
5987db96d56Sopenharmony_ci
5997db96d56Sopenharmony_ci
6007db96d56Sopenharmony_ci   .. method:: insert(pos, child, **kw)
6017db96d56Sopenharmony_ci
6027db96d56Sopenharmony_ci      Inserts a pane at the specified position.
6037db96d56Sopenharmony_ci
6047db96d56Sopenharmony_ci      *pos* is either the string "end", an integer index, or the name of a
6057db96d56Sopenharmony_ci      managed child. If *child* is already managed by the notebook, moves it to
6067db96d56Sopenharmony_ci      the specified position.
6077db96d56Sopenharmony_ci
6087db96d56Sopenharmony_ci      See `Tab Options`_ for the list of available options.
6097db96d56Sopenharmony_ci
6107db96d56Sopenharmony_ci
6117db96d56Sopenharmony_ci   .. method:: select(tab_id=None)
6127db96d56Sopenharmony_ci
6137db96d56Sopenharmony_ci      Selects the specified *tab_id*.
6147db96d56Sopenharmony_ci
6157db96d56Sopenharmony_ci      The associated child window will be displayed, and the
6167db96d56Sopenharmony_ci      previously selected window (if different) is unmapped. If *tab_id* is
6177db96d56Sopenharmony_ci      omitted, returns the widget name of the currently selected pane.
6187db96d56Sopenharmony_ci
6197db96d56Sopenharmony_ci
6207db96d56Sopenharmony_ci   .. method:: tab(tab_id, option=None, **kw)
6217db96d56Sopenharmony_ci
6227db96d56Sopenharmony_ci      Query or modify the options of the specific *tab_id*.
6237db96d56Sopenharmony_ci
6247db96d56Sopenharmony_ci      If *kw* is not given, returns a dictionary of the tab option values. If
6257db96d56Sopenharmony_ci      *option* is specified, returns the value of that *option*. Otherwise,
6267db96d56Sopenharmony_ci      sets the options to the corresponding values.
6277db96d56Sopenharmony_ci
6287db96d56Sopenharmony_ci
6297db96d56Sopenharmony_ci   .. method:: tabs()
6307db96d56Sopenharmony_ci
6317db96d56Sopenharmony_ci      Returns a list of windows managed by the notebook.
6327db96d56Sopenharmony_ci
6337db96d56Sopenharmony_ci
6347db96d56Sopenharmony_ci   .. method:: enable_traversal()
6357db96d56Sopenharmony_ci
6367db96d56Sopenharmony_ci      Enable keyboard traversal for a toplevel window containing this notebook.
6377db96d56Sopenharmony_ci
6387db96d56Sopenharmony_ci      This will extend the bindings for the toplevel window containing the
6397db96d56Sopenharmony_ci      notebook as follows:
6407db96d56Sopenharmony_ci
6417db96d56Sopenharmony_ci      * :kbd:`Control-Tab`: selects the tab following the currently selected one.
6427db96d56Sopenharmony_ci      * :kbd:`Shift-Control-Tab`: selects the tab preceding the currently selected one.
6437db96d56Sopenharmony_ci      * :kbd:`Alt-K`: where *K* is the mnemonic (underlined) character of any tab, will
6447db96d56Sopenharmony_ci        select that tab.
6457db96d56Sopenharmony_ci
6467db96d56Sopenharmony_ci      Multiple notebooks in a single toplevel may be enabled for traversal,
6477db96d56Sopenharmony_ci      including nested notebooks. However, notebook traversal only works
6487db96d56Sopenharmony_ci      properly if all panes have the notebook they are in as master.
6497db96d56Sopenharmony_ci
6507db96d56Sopenharmony_ci
6517db96d56Sopenharmony_ciProgressbar
6527db96d56Sopenharmony_ci-----------
6537db96d56Sopenharmony_ci
6547db96d56Sopenharmony_ciThe :class:`ttk.Progressbar` widget shows the status of a long-running
6557db96d56Sopenharmony_cioperation. It can operate in two modes:  1) the determinate mode which shows the
6567db96d56Sopenharmony_ciamount completed relative to the total amount of work to be done and 2) the
6577db96d56Sopenharmony_ciindeterminate mode which provides an animated display to let the user know that
6587db96d56Sopenharmony_ciwork is progressing.
6597db96d56Sopenharmony_ci
6607db96d56Sopenharmony_ci
6617db96d56Sopenharmony_ciOptions
6627db96d56Sopenharmony_ci^^^^^^^
6637db96d56Sopenharmony_ci
6647db96d56Sopenharmony_ciThis widget accepts the following specific options:
6657db96d56Sopenharmony_ci
6667db96d56Sopenharmony_ci   .. tabularcolumns:: |l|L|
6677db96d56Sopenharmony_ci
6687db96d56Sopenharmony_ci   +----------+---------------------------------------------------------------+
6697db96d56Sopenharmony_ci   | Option   | Description                                                   |
6707db96d56Sopenharmony_ci   +==========+===============================================================+
6717db96d56Sopenharmony_ci   | orient   | One of "horizontal" or "vertical". Specifies the orientation  |
6727db96d56Sopenharmony_ci   |          | of the progress bar.                                          |
6737db96d56Sopenharmony_ci   +----------+---------------------------------------------------------------+
6747db96d56Sopenharmony_ci   | length   | Specifies the length of the long axis of the progress bar     |
6757db96d56Sopenharmony_ci   |          | (width if horizontal, height if vertical).                    |
6767db96d56Sopenharmony_ci   +----------+---------------------------------------------------------------+
6777db96d56Sopenharmony_ci   | mode     | One of "determinate" or "indeterminate".                      |
6787db96d56Sopenharmony_ci   +----------+---------------------------------------------------------------+
6797db96d56Sopenharmony_ci   | maximum  | A number specifying the maximum value. Defaults to 100.       |
6807db96d56Sopenharmony_ci   +----------+---------------------------------------------------------------+
6817db96d56Sopenharmony_ci   | value    | The current value of the progress bar. In "determinate" mode, |
6827db96d56Sopenharmony_ci   |          | this represents the amount of work completed. In              |
6837db96d56Sopenharmony_ci   |          | "indeterminate" mode, it is interpreted as modulo *maximum*;  |
6847db96d56Sopenharmony_ci   |          | that is, the progress bar completes one "cycle" when its value|
6857db96d56Sopenharmony_ci   |          | increases by *maximum*.                                       |
6867db96d56Sopenharmony_ci   +----------+---------------------------------------------------------------+
6877db96d56Sopenharmony_ci   | variable | A name which is linked to the option value. If specified, the |
6887db96d56Sopenharmony_ci   |          | value of the progress bar is automatically set to the value of|
6897db96d56Sopenharmony_ci   |          | this name whenever the latter is modified.                    |
6907db96d56Sopenharmony_ci   +----------+---------------------------------------------------------------+
6917db96d56Sopenharmony_ci   | phase    | Read-only option. The widget periodically increments the value|
6927db96d56Sopenharmony_ci   |          | of this option whenever its value is greater than 0 and, in   |
6937db96d56Sopenharmony_ci   |          | determinate mode, less than maximum. This option may be used  |
6947db96d56Sopenharmony_ci   |          | by the current theme to provide additional animation effects. |
6957db96d56Sopenharmony_ci   +----------+---------------------------------------------------------------+
6967db96d56Sopenharmony_ci
6977db96d56Sopenharmony_ci
6987db96d56Sopenharmony_cittk.Progressbar
6997db96d56Sopenharmony_ci^^^^^^^^^^^^^^^
7007db96d56Sopenharmony_ci
7017db96d56Sopenharmony_ci.. class:: Progressbar
7027db96d56Sopenharmony_ci
7037db96d56Sopenharmony_ci   .. method:: start(interval=None)
7047db96d56Sopenharmony_ci
7057db96d56Sopenharmony_ci      Begin autoincrement mode: schedules a recurring timer event that calls
7067db96d56Sopenharmony_ci      :meth:`Progressbar.step` every *interval* milliseconds. If omitted,
7077db96d56Sopenharmony_ci      *interval* defaults to 50 milliseconds.
7087db96d56Sopenharmony_ci
7097db96d56Sopenharmony_ci
7107db96d56Sopenharmony_ci   .. method:: step(amount=None)
7117db96d56Sopenharmony_ci
7127db96d56Sopenharmony_ci      Increments the progress bar's value by *amount*.
7137db96d56Sopenharmony_ci
7147db96d56Sopenharmony_ci      *amount* defaults to 1.0 if omitted.
7157db96d56Sopenharmony_ci
7167db96d56Sopenharmony_ci
7177db96d56Sopenharmony_ci   .. method:: stop()
7187db96d56Sopenharmony_ci
7197db96d56Sopenharmony_ci      Stop autoincrement mode: cancels any recurring timer event initiated by
7207db96d56Sopenharmony_ci      :meth:`Progressbar.start` for this progress bar.
7217db96d56Sopenharmony_ci
7227db96d56Sopenharmony_ci
7237db96d56Sopenharmony_ciSeparator
7247db96d56Sopenharmony_ci---------
7257db96d56Sopenharmony_ci
7267db96d56Sopenharmony_ciThe :class:`ttk.Separator` widget displays a horizontal or vertical separator
7277db96d56Sopenharmony_cibar.
7287db96d56Sopenharmony_ci
7297db96d56Sopenharmony_ciIt has no other methods besides the ones inherited from :class:`ttk.Widget`.
7307db96d56Sopenharmony_ci
7317db96d56Sopenharmony_ci
7327db96d56Sopenharmony_ciOptions
7337db96d56Sopenharmony_ci^^^^^^^
7347db96d56Sopenharmony_ci
7357db96d56Sopenharmony_ciThis widget accepts the following specific option:
7367db96d56Sopenharmony_ci
7377db96d56Sopenharmony_ci   .. tabularcolumns:: |l|L|
7387db96d56Sopenharmony_ci
7397db96d56Sopenharmony_ci   +--------+----------------------------------------------------------------+
7407db96d56Sopenharmony_ci   | Option | Description                                                    |
7417db96d56Sopenharmony_ci   +========+================================================================+
7427db96d56Sopenharmony_ci   | orient | One of "horizontal" or "vertical". Specifies the orientation of|
7437db96d56Sopenharmony_ci   |        | the separator.                                                 |
7447db96d56Sopenharmony_ci   +--------+----------------------------------------------------------------+
7457db96d56Sopenharmony_ci
7467db96d56Sopenharmony_ci
7477db96d56Sopenharmony_ciSizegrip
7487db96d56Sopenharmony_ci--------
7497db96d56Sopenharmony_ci
7507db96d56Sopenharmony_ciThe :class:`ttk.Sizegrip` widget (also known as a grow box) allows the user to
7517db96d56Sopenharmony_ciresize the containing toplevel window by pressing and dragging the grip.
7527db96d56Sopenharmony_ci
7537db96d56Sopenharmony_ciThis widget has neither specific options nor specific methods, besides the
7547db96d56Sopenharmony_ciones inherited from :class:`ttk.Widget`.
7557db96d56Sopenharmony_ci
7567db96d56Sopenharmony_ci
7577db96d56Sopenharmony_ciPlatform-specific notes
7587db96d56Sopenharmony_ci^^^^^^^^^^^^^^^^^^^^^^^
7597db96d56Sopenharmony_ci
7607db96d56Sopenharmony_ci* On macOS, toplevel windows automatically include a built-in size grip
7617db96d56Sopenharmony_ci  by default. Adding a :class:`Sizegrip` is harmless, since the built-in
7627db96d56Sopenharmony_ci  grip will just mask the widget.
7637db96d56Sopenharmony_ci
7647db96d56Sopenharmony_ci
7657db96d56Sopenharmony_ciBugs
7667db96d56Sopenharmony_ci^^^^
7677db96d56Sopenharmony_ci
7687db96d56Sopenharmony_ci* If the containing toplevel's position was specified relative to the right
7697db96d56Sopenharmony_ci  or bottom of the screen (e.g. ....), the :class:`Sizegrip` widget will
7707db96d56Sopenharmony_ci  not resize the window.
7717db96d56Sopenharmony_ci* This widget supports only "southeast" resizing.
7727db96d56Sopenharmony_ci
7737db96d56Sopenharmony_ci
7747db96d56Sopenharmony_ciTreeview
7757db96d56Sopenharmony_ci--------
7767db96d56Sopenharmony_ci
7777db96d56Sopenharmony_ciThe :class:`ttk.Treeview` widget displays a hierarchical collection of items.
7787db96d56Sopenharmony_ciEach item has a textual label, an optional image, and an optional list of data
7797db96d56Sopenharmony_civalues. The data values are displayed in successive columns after the tree
7807db96d56Sopenharmony_cilabel.
7817db96d56Sopenharmony_ci
7827db96d56Sopenharmony_ciThe order in which data values are displayed may be controlled by setting
7837db96d56Sopenharmony_cithe widget option ``displaycolumns``. The tree widget can also display column
7847db96d56Sopenharmony_ciheadings. Columns may be accessed by number or symbolic names listed in the
7857db96d56Sopenharmony_ciwidget option columns. See `Column Identifiers`_.
7867db96d56Sopenharmony_ci
7877db96d56Sopenharmony_ciEach item is identified by a unique name. The widget will generate item IDs
7887db96d56Sopenharmony_ciif they are not supplied by the caller. There is a distinguished root item,
7897db96d56Sopenharmony_cinamed ``{}``. The root item itself is not displayed; its children appear at the
7907db96d56Sopenharmony_citop level of the hierarchy.
7917db96d56Sopenharmony_ci
7927db96d56Sopenharmony_ciEach item also has a list of tags, which can be used to associate event bindings
7937db96d56Sopenharmony_ciwith individual items and control the appearance of the item.
7947db96d56Sopenharmony_ci
7957db96d56Sopenharmony_ciThe Treeview widget supports horizontal and vertical scrolling, according to
7967db96d56Sopenharmony_cithe options described in `Scrollable Widget Options`_ and the methods
7977db96d56Sopenharmony_ci:meth:`Treeview.xview` and :meth:`Treeview.yview`.
7987db96d56Sopenharmony_ci
7997db96d56Sopenharmony_ci
8007db96d56Sopenharmony_ciOptions
8017db96d56Sopenharmony_ci^^^^^^^
8027db96d56Sopenharmony_ci
8037db96d56Sopenharmony_ciThis widget accepts the following specific options:
8047db96d56Sopenharmony_ci
8057db96d56Sopenharmony_ci   .. tabularcolumns:: |l|p{0.7\linewidth}|
8067db96d56Sopenharmony_ci
8077db96d56Sopenharmony_ci   +----------------+--------------------------------------------------------+
8087db96d56Sopenharmony_ci   | Option         | Description                                            |
8097db96d56Sopenharmony_ci   +================+========================================================+
8107db96d56Sopenharmony_ci   | columns        | A list of column identifiers, specifying the number of |
8117db96d56Sopenharmony_ci   |                | columns and their names.                               |
8127db96d56Sopenharmony_ci   +----------------+--------------------------------------------------------+
8137db96d56Sopenharmony_ci   | displaycolumns | A list of column identifiers (either symbolic or       |
8147db96d56Sopenharmony_ci   |                | integer indices) specifying which data columns are     |
8157db96d56Sopenharmony_ci   |                | displayed and the order in which they appear, or the   |
8167db96d56Sopenharmony_ci   |                | string "#all".                                         |
8177db96d56Sopenharmony_ci   +----------------+--------------------------------------------------------+
8187db96d56Sopenharmony_ci   | height         | Specifies the number of rows which should be visible.  |
8197db96d56Sopenharmony_ci   |                | Note: the requested width is determined from the sum   |
8207db96d56Sopenharmony_ci   |                | of the column widths.                                  |
8217db96d56Sopenharmony_ci   +----------------+--------------------------------------------------------+
8227db96d56Sopenharmony_ci   | padding        | Specifies the internal padding for the widget. The     |
8237db96d56Sopenharmony_ci   |                | padding is a list of up to four length specifications. |
8247db96d56Sopenharmony_ci   +----------------+--------------------------------------------------------+
8257db96d56Sopenharmony_ci   | selectmode     | Controls how the built-in class bindings manage the    |
8267db96d56Sopenharmony_ci   |                | selection. One of "extended", "browse" or "none".      |
8277db96d56Sopenharmony_ci   |                | If set to "extended" (the default), multiple items may |
8287db96d56Sopenharmony_ci   |                | be selected. If "browse", only a single item will be   |
8297db96d56Sopenharmony_ci   |                | selected at a time. If "none", the selection will not  |
8307db96d56Sopenharmony_ci   |                | be changed.                                            |
8317db96d56Sopenharmony_ci   |                |                                                        |
8327db96d56Sopenharmony_ci   |                | Note that the application code and tag bindings can set|
8337db96d56Sopenharmony_ci   |                | the selection however they wish, regardless of the     |
8347db96d56Sopenharmony_ci   |                | value  of this option.                                 |
8357db96d56Sopenharmony_ci   +----------------+--------------------------------------------------------+
8367db96d56Sopenharmony_ci   | show           | A list containing zero or more of the following values,|
8377db96d56Sopenharmony_ci   |                | specifying which elements of the tree to display.      |
8387db96d56Sopenharmony_ci   |                |                                                        |
8397db96d56Sopenharmony_ci   |                | * tree: display tree labels in column #0.              |
8407db96d56Sopenharmony_ci   |                | * headings: display the heading row.                   |
8417db96d56Sopenharmony_ci   |                |                                                        |
8427db96d56Sopenharmony_ci   |                | The default is "tree headings", i.e., show all         |
8437db96d56Sopenharmony_ci   |                | elements.                                              |
8447db96d56Sopenharmony_ci   |                |                                                        |
8457db96d56Sopenharmony_ci   |                | **Note**: Column #0 always refers to the tree column,  |
8467db96d56Sopenharmony_ci   |                | even if show="tree" is not specified.                  |
8477db96d56Sopenharmony_ci   +----------------+--------------------------------------------------------+
8487db96d56Sopenharmony_ci
8497db96d56Sopenharmony_ci
8507db96d56Sopenharmony_ciItem Options
8517db96d56Sopenharmony_ci^^^^^^^^^^^^
8527db96d56Sopenharmony_ci
8537db96d56Sopenharmony_ciThe following item options may be specified for items in the insert and item
8547db96d56Sopenharmony_ciwidget commands.
8557db96d56Sopenharmony_ci
8567db96d56Sopenharmony_ci   .. tabularcolumns:: |l|L|
8577db96d56Sopenharmony_ci
8587db96d56Sopenharmony_ci   +--------+---------------------------------------------------------------+
8597db96d56Sopenharmony_ci   | Option | Description                                                   |
8607db96d56Sopenharmony_ci   +========+===============================================================+
8617db96d56Sopenharmony_ci   | text   | The textual label to display for the item.                    |
8627db96d56Sopenharmony_ci   +--------+---------------------------------------------------------------+
8637db96d56Sopenharmony_ci   | image  | A Tk Image, displayed to the left of the label.               |
8647db96d56Sopenharmony_ci   +--------+---------------------------------------------------------------+
8657db96d56Sopenharmony_ci   | values | The list of values associated with the item.                  |
8667db96d56Sopenharmony_ci   |        |                                                               |
8677db96d56Sopenharmony_ci   |        | Each item should have the same number of values as the widget |
8687db96d56Sopenharmony_ci   |        | option columns. If there are fewer values than columns, the   |
8697db96d56Sopenharmony_ci   |        | remaining values are assumed empty. If there are more values  |
8707db96d56Sopenharmony_ci   |        | than columns, the extra values are ignored.                   |
8717db96d56Sopenharmony_ci   +--------+---------------------------------------------------------------+
8727db96d56Sopenharmony_ci   | open   | ``True``/``False`` value indicating whether the item's        |
8737db96d56Sopenharmony_ci   |        | children should be displayed or hidden.                       |
8747db96d56Sopenharmony_ci   +--------+---------------------------------------------------------------+
8757db96d56Sopenharmony_ci   | tags   | A list of tags associated with this item.                     |
8767db96d56Sopenharmony_ci   +--------+---------------------------------------------------------------+
8777db96d56Sopenharmony_ci
8787db96d56Sopenharmony_ci
8797db96d56Sopenharmony_ciTag Options
8807db96d56Sopenharmony_ci^^^^^^^^^^^
8817db96d56Sopenharmony_ci
8827db96d56Sopenharmony_ciThe following options may be specified on tags:
8837db96d56Sopenharmony_ci
8847db96d56Sopenharmony_ci   .. tabularcolumns:: |l|L|
8857db96d56Sopenharmony_ci
8867db96d56Sopenharmony_ci   +------------+-----------------------------------------------------------+
8877db96d56Sopenharmony_ci   | Option     | Description                                               |
8887db96d56Sopenharmony_ci   +============+===========================================================+
8897db96d56Sopenharmony_ci   | foreground | Specifies the text foreground color.                      |
8907db96d56Sopenharmony_ci   +------------+-----------------------------------------------------------+
8917db96d56Sopenharmony_ci   | background | Specifies the cell or item background color.              |
8927db96d56Sopenharmony_ci   +------------+-----------------------------------------------------------+
8937db96d56Sopenharmony_ci   | font       | Specifies the font to use when drawing text.              |
8947db96d56Sopenharmony_ci   +------------+-----------------------------------------------------------+
8957db96d56Sopenharmony_ci   | image      | Specifies the item image, in case the item's image option |
8967db96d56Sopenharmony_ci   |            | is empty.                                                 |
8977db96d56Sopenharmony_ci   +------------+-----------------------------------------------------------+
8987db96d56Sopenharmony_ci
8997db96d56Sopenharmony_ci
9007db96d56Sopenharmony_ciColumn Identifiers
9017db96d56Sopenharmony_ci^^^^^^^^^^^^^^^^^^
9027db96d56Sopenharmony_ci
9037db96d56Sopenharmony_ciColumn identifiers take any of the following forms:
9047db96d56Sopenharmony_ci
9057db96d56Sopenharmony_ci* A symbolic name from the list of columns option.
9067db96d56Sopenharmony_ci* An integer n, specifying the nth data column.
9077db96d56Sopenharmony_ci* A string of the form #n, where n is an integer, specifying the nth display
9087db96d56Sopenharmony_ci  column.
9097db96d56Sopenharmony_ci
9107db96d56Sopenharmony_ciNotes:
9117db96d56Sopenharmony_ci
9127db96d56Sopenharmony_ci* Item's option values may be displayed in a different order than the order
9137db96d56Sopenharmony_ci  in which they are stored.
9147db96d56Sopenharmony_ci* Column #0 always refers to the tree column, even if show="tree" is not
9157db96d56Sopenharmony_ci  specified.
9167db96d56Sopenharmony_ci
9177db96d56Sopenharmony_ciA data column number is an index into an item's option values list; a display
9187db96d56Sopenharmony_cicolumn number is the column number in the tree where the values are displayed.
9197db96d56Sopenharmony_ciTree labels are displayed in column #0. If option displaycolumns is not set,
9207db96d56Sopenharmony_cithen data column n is displayed in column #n+1. Again, **column #0 always
9217db96d56Sopenharmony_cirefers to the tree column**.
9227db96d56Sopenharmony_ci
9237db96d56Sopenharmony_ci
9247db96d56Sopenharmony_ciVirtual Events
9257db96d56Sopenharmony_ci^^^^^^^^^^^^^^
9267db96d56Sopenharmony_ci
9277db96d56Sopenharmony_ciThe Treeview widget generates the following virtual events.
9287db96d56Sopenharmony_ci
9297db96d56Sopenharmony_ci   .. tabularcolumns:: |l|L|
9307db96d56Sopenharmony_ci
9317db96d56Sopenharmony_ci   +--------------------+--------------------------------------------------+
9327db96d56Sopenharmony_ci   | Event              | Description                                      |
9337db96d56Sopenharmony_ci   +====================+==================================================+
9347db96d56Sopenharmony_ci   | <<TreeviewSelect>> | Generated whenever the selection changes.        |
9357db96d56Sopenharmony_ci   +--------------------+--------------------------------------------------+
9367db96d56Sopenharmony_ci   | <<TreeviewOpen>>   | Generated just before settings the focus item to |
9377db96d56Sopenharmony_ci   |                    | open=True.                                       |
9387db96d56Sopenharmony_ci   +--------------------+--------------------------------------------------+
9397db96d56Sopenharmony_ci   | <<TreeviewClose>>  | Generated just after setting the focus item to   |
9407db96d56Sopenharmony_ci   |                    | open=False.                                      |
9417db96d56Sopenharmony_ci   +--------------------+--------------------------------------------------+
9427db96d56Sopenharmony_ci
9437db96d56Sopenharmony_ciThe :meth:`Treeview.focus` and :meth:`Treeview.selection` methods can be used
9447db96d56Sopenharmony_cito determine the affected item or items.
9457db96d56Sopenharmony_ci
9467db96d56Sopenharmony_ci
9477db96d56Sopenharmony_cittk.Treeview
9487db96d56Sopenharmony_ci^^^^^^^^^^^^
9497db96d56Sopenharmony_ci
9507db96d56Sopenharmony_ci.. class:: Treeview
9517db96d56Sopenharmony_ci
9527db96d56Sopenharmony_ci   .. method:: bbox(item, column=None)
9537db96d56Sopenharmony_ci
9547db96d56Sopenharmony_ci      Returns the bounding box (relative to the treeview widget's window) of
9557db96d56Sopenharmony_ci      the specified *item* in the form (x, y, width, height).
9567db96d56Sopenharmony_ci
9577db96d56Sopenharmony_ci      If *column* is specified, returns the bounding box of that cell. If the
9587db96d56Sopenharmony_ci      *item* is not visible (i.e., if it is a descendant of a closed item or is
9597db96d56Sopenharmony_ci      scrolled offscreen), returns an empty string.
9607db96d56Sopenharmony_ci
9617db96d56Sopenharmony_ci
9627db96d56Sopenharmony_ci   .. method:: get_children(item=None)
9637db96d56Sopenharmony_ci
9647db96d56Sopenharmony_ci      Returns the list of children belonging to *item*.
9657db96d56Sopenharmony_ci
9667db96d56Sopenharmony_ci      If *item* is not specified, returns root children.
9677db96d56Sopenharmony_ci
9687db96d56Sopenharmony_ci
9697db96d56Sopenharmony_ci   .. method:: set_children(item, *newchildren)
9707db96d56Sopenharmony_ci
9717db96d56Sopenharmony_ci      Replaces *item*'s child with *newchildren*.
9727db96d56Sopenharmony_ci
9737db96d56Sopenharmony_ci      Children present in *item* that are not present in *newchildren* are
9747db96d56Sopenharmony_ci      detached from the tree. No items in *newchildren* may be an ancestor of
9757db96d56Sopenharmony_ci      *item*. Note that not specifying *newchildren* results in detaching
9767db96d56Sopenharmony_ci      *item*'s children.
9777db96d56Sopenharmony_ci
9787db96d56Sopenharmony_ci
9797db96d56Sopenharmony_ci   .. method:: column(column, option=None, **kw)
9807db96d56Sopenharmony_ci
9817db96d56Sopenharmony_ci      Query or modify the options for the specified *column*.
9827db96d56Sopenharmony_ci
9837db96d56Sopenharmony_ci      If *kw* is not given, returns a dict of the column option values. If
9847db96d56Sopenharmony_ci      *option* is specified then the value for that *option* is returned.
9857db96d56Sopenharmony_ci      Otherwise, sets the options to the corresponding values.
9867db96d56Sopenharmony_ci
9877db96d56Sopenharmony_ci      The valid options/values are:
9887db96d56Sopenharmony_ci
9897db96d56Sopenharmony_ci      * id
9907db96d56Sopenharmony_ci         Returns the column name. This is a read-only option.
9917db96d56Sopenharmony_ci      * anchor: One of the standard Tk anchor values.
9927db96d56Sopenharmony_ci         Specifies how the text in this column should be aligned with respect
9937db96d56Sopenharmony_ci         to the cell.
9947db96d56Sopenharmony_ci      * minwidth: width
9957db96d56Sopenharmony_ci         The minimum width of the column in pixels. The treeview widget will
9967db96d56Sopenharmony_ci         not make the column any smaller than specified by this option when
9977db96d56Sopenharmony_ci         the widget is resized or the user drags a column.
9987db96d56Sopenharmony_ci      * stretch: ``True``/``False``
9997db96d56Sopenharmony_ci         Specifies whether the column's width should be adjusted when
10007db96d56Sopenharmony_ci         the widget is resized.
10017db96d56Sopenharmony_ci      * width: width
10027db96d56Sopenharmony_ci         The width of the column in pixels.
10037db96d56Sopenharmony_ci
10047db96d56Sopenharmony_ci      To configure the tree column, call this with column = "#0"
10057db96d56Sopenharmony_ci
10067db96d56Sopenharmony_ci   .. method:: delete(*items)
10077db96d56Sopenharmony_ci
10087db96d56Sopenharmony_ci      Delete all specified *items* and all their descendants.
10097db96d56Sopenharmony_ci
10107db96d56Sopenharmony_ci      The root item may not be deleted.
10117db96d56Sopenharmony_ci
10127db96d56Sopenharmony_ci
10137db96d56Sopenharmony_ci   .. method:: detach(*items)
10147db96d56Sopenharmony_ci
10157db96d56Sopenharmony_ci      Unlinks all of the specified *items* from the tree.
10167db96d56Sopenharmony_ci
10177db96d56Sopenharmony_ci      The items and all of their descendants are still present, and may be
10187db96d56Sopenharmony_ci      reinserted at another point in the tree, but will not be displayed.
10197db96d56Sopenharmony_ci
10207db96d56Sopenharmony_ci      The root item may not be detached.
10217db96d56Sopenharmony_ci
10227db96d56Sopenharmony_ci
10237db96d56Sopenharmony_ci   .. method:: exists(item)
10247db96d56Sopenharmony_ci
10257db96d56Sopenharmony_ci      Returns ``True`` if the specified *item* is present in the tree.
10267db96d56Sopenharmony_ci
10277db96d56Sopenharmony_ci
10287db96d56Sopenharmony_ci   .. method:: focus(item=None)
10297db96d56Sopenharmony_ci
10307db96d56Sopenharmony_ci      If *item* is specified, sets the focus item to *item*. Otherwise, returns
10317db96d56Sopenharmony_ci      the current focus item, or '' if there is none.
10327db96d56Sopenharmony_ci
10337db96d56Sopenharmony_ci
10347db96d56Sopenharmony_ci   .. method:: heading(column, option=None, **kw)
10357db96d56Sopenharmony_ci
10367db96d56Sopenharmony_ci      Query or modify the heading options for the specified *column*.
10377db96d56Sopenharmony_ci
10387db96d56Sopenharmony_ci      If *kw* is not given, returns a dict of the heading option values. If
10397db96d56Sopenharmony_ci      *option* is specified then the value for that *option* is returned.
10407db96d56Sopenharmony_ci      Otherwise, sets the options to the corresponding values.
10417db96d56Sopenharmony_ci
10427db96d56Sopenharmony_ci      The valid options/values are:
10437db96d56Sopenharmony_ci
10447db96d56Sopenharmony_ci      * text: text
10457db96d56Sopenharmony_ci         The text to display in the column heading.
10467db96d56Sopenharmony_ci      * image: imageName
10477db96d56Sopenharmony_ci         Specifies an image to display to the right of the column heading.
10487db96d56Sopenharmony_ci      * anchor: anchor
10497db96d56Sopenharmony_ci         Specifies how the heading text should be aligned. One of the standard
10507db96d56Sopenharmony_ci         Tk anchor values.
10517db96d56Sopenharmony_ci      * command: callback
10527db96d56Sopenharmony_ci         A callback to be invoked when the heading label is pressed.
10537db96d56Sopenharmony_ci
10547db96d56Sopenharmony_ci      To configure the tree column heading, call this with column = "#0".
10557db96d56Sopenharmony_ci
10567db96d56Sopenharmony_ci
10577db96d56Sopenharmony_ci   .. method:: identify(component, x, y)
10587db96d56Sopenharmony_ci
10597db96d56Sopenharmony_ci      Returns a description of the specified *component* under the point given
10607db96d56Sopenharmony_ci      by *x* and *y*, or the empty string if no such *component* is present at
10617db96d56Sopenharmony_ci      that position.
10627db96d56Sopenharmony_ci
10637db96d56Sopenharmony_ci
10647db96d56Sopenharmony_ci   .. method:: identify_row(y)
10657db96d56Sopenharmony_ci
10667db96d56Sopenharmony_ci      Returns the item ID of the item at position *y*.
10677db96d56Sopenharmony_ci
10687db96d56Sopenharmony_ci
10697db96d56Sopenharmony_ci   .. method:: identify_column(x)
10707db96d56Sopenharmony_ci
10717db96d56Sopenharmony_ci      Returns the data column identifier of the cell at position *x*.
10727db96d56Sopenharmony_ci
10737db96d56Sopenharmony_ci      The tree column has ID #0.
10747db96d56Sopenharmony_ci
10757db96d56Sopenharmony_ci
10767db96d56Sopenharmony_ci   .. method:: identify_region(x, y)
10777db96d56Sopenharmony_ci
10787db96d56Sopenharmony_ci      Returns one of:
10797db96d56Sopenharmony_ci
10807db96d56Sopenharmony_ci      +-----------+--------------------------------------+
10817db96d56Sopenharmony_ci      | region    | meaning                              |
10827db96d56Sopenharmony_ci      +===========+======================================+
10837db96d56Sopenharmony_ci      | heading   | Tree heading area.                   |
10847db96d56Sopenharmony_ci      +-----------+--------------------------------------+
10857db96d56Sopenharmony_ci      | separator | Space between two columns headings.  |
10867db96d56Sopenharmony_ci      +-----------+--------------------------------------+
10877db96d56Sopenharmony_ci      | tree      | The tree area.                       |
10887db96d56Sopenharmony_ci      +-----------+--------------------------------------+
10897db96d56Sopenharmony_ci      | cell      | A data cell.                         |
10907db96d56Sopenharmony_ci      +-----------+--------------------------------------+
10917db96d56Sopenharmony_ci
10927db96d56Sopenharmony_ci      Availability: Tk 8.6.
10937db96d56Sopenharmony_ci
10947db96d56Sopenharmony_ci
10957db96d56Sopenharmony_ci   .. method:: identify_element(x, y)
10967db96d56Sopenharmony_ci
10977db96d56Sopenharmony_ci      Returns the element at position *x*, *y*.
10987db96d56Sopenharmony_ci
10997db96d56Sopenharmony_ci      Availability: Tk 8.6.
11007db96d56Sopenharmony_ci
11017db96d56Sopenharmony_ci
11027db96d56Sopenharmony_ci   .. method:: index(item)
11037db96d56Sopenharmony_ci
11047db96d56Sopenharmony_ci      Returns the integer index of *item* within its parent's list of children.
11057db96d56Sopenharmony_ci
11067db96d56Sopenharmony_ci
11077db96d56Sopenharmony_ci   .. method:: insert(parent, index, iid=None, **kw)
11087db96d56Sopenharmony_ci
11097db96d56Sopenharmony_ci      Creates a new item and returns the item identifier of the newly created
11107db96d56Sopenharmony_ci      item.
11117db96d56Sopenharmony_ci
11127db96d56Sopenharmony_ci      *parent* is the item ID of the parent item, or the empty string to create
11137db96d56Sopenharmony_ci      a new top-level item. *index* is an integer, or the value "end",
11147db96d56Sopenharmony_ci      specifying where in the list of parent's children to insert the new item.
11157db96d56Sopenharmony_ci      If *index* is less than or equal to zero, the new node is inserted at
11167db96d56Sopenharmony_ci      the beginning; if *index* is greater than or equal to the current number
11177db96d56Sopenharmony_ci      of children, it is inserted at the end. If *iid* is specified, it is used
11187db96d56Sopenharmony_ci      as the item identifier; *iid* must not already exist in the tree.
11197db96d56Sopenharmony_ci      Otherwise, a new unique identifier is generated.
11207db96d56Sopenharmony_ci
11217db96d56Sopenharmony_ci      See `Item Options`_ for the list of available points.
11227db96d56Sopenharmony_ci
11237db96d56Sopenharmony_ci
11247db96d56Sopenharmony_ci   .. method:: item(item, option=None, **kw)
11257db96d56Sopenharmony_ci
11267db96d56Sopenharmony_ci      Query or modify the options for the specified *item*.
11277db96d56Sopenharmony_ci
11287db96d56Sopenharmony_ci      If no options are given, a dict with options/values for the item is
11297db96d56Sopenharmony_ci      returned.
11307db96d56Sopenharmony_ci      If *option* is specified then the value for that option is returned.
11317db96d56Sopenharmony_ci      Otherwise, sets the options to the corresponding values as given by *kw*.
11327db96d56Sopenharmony_ci
11337db96d56Sopenharmony_ci
11347db96d56Sopenharmony_ci   .. method:: move(item, parent, index)
11357db96d56Sopenharmony_ci
11367db96d56Sopenharmony_ci      Moves *item* to position *index* in *parent*'s list of children.
11377db96d56Sopenharmony_ci
11387db96d56Sopenharmony_ci      It is illegal to move an item under one of its descendants. If *index* is
11397db96d56Sopenharmony_ci      less than or equal to zero, *item* is moved to the beginning; if greater
11407db96d56Sopenharmony_ci      than or equal to the number of children, it is moved to the end. If *item*
11417db96d56Sopenharmony_ci      was detached it is reattached.
11427db96d56Sopenharmony_ci
11437db96d56Sopenharmony_ci
11447db96d56Sopenharmony_ci   .. method:: next(item)
11457db96d56Sopenharmony_ci
11467db96d56Sopenharmony_ci      Returns the identifier of *item*'s next sibling, or '' if *item* is the
11477db96d56Sopenharmony_ci      last child of its parent.
11487db96d56Sopenharmony_ci
11497db96d56Sopenharmony_ci
11507db96d56Sopenharmony_ci   .. method:: parent(item)
11517db96d56Sopenharmony_ci
11527db96d56Sopenharmony_ci      Returns the ID of the parent of *item*, or '' if *item* is at the top
11537db96d56Sopenharmony_ci      level of the hierarchy.
11547db96d56Sopenharmony_ci
11557db96d56Sopenharmony_ci
11567db96d56Sopenharmony_ci   .. method:: prev(item)
11577db96d56Sopenharmony_ci
11587db96d56Sopenharmony_ci      Returns the identifier of *item*'s previous sibling, or '' if *item* is
11597db96d56Sopenharmony_ci      the first child of its parent.
11607db96d56Sopenharmony_ci
11617db96d56Sopenharmony_ci
11627db96d56Sopenharmony_ci   .. method:: reattach(item, parent, index)
11637db96d56Sopenharmony_ci
11647db96d56Sopenharmony_ci      An alias for :meth:`Treeview.move`.
11657db96d56Sopenharmony_ci
11667db96d56Sopenharmony_ci
11677db96d56Sopenharmony_ci   .. method:: see(item)
11687db96d56Sopenharmony_ci
11697db96d56Sopenharmony_ci      Ensure that *item* is visible.
11707db96d56Sopenharmony_ci
11717db96d56Sopenharmony_ci      Sets all of *item*'s ancestors open option to ``True``, and scrolls the
11727db96d56Sopenharmony_ci      widget if necessary so that *item* is within the visible portion of
11737db96d56Sopenharmony_ci      the tree.
11747db96d56Sopenharmony_ci
11757db96d56Sopenharmony_ci
11767db96d56Sopenharmony_ci   .. method:: selection()
11777db96d56Sopenharmony_ci
11787db96d56Sopenharmony_ci      Returns a tuple of selected items.
11797db96d56Sopenharmony_ci
11807db96d56Sopenharmony_ci      .. versionchanged:: 3.8
11817db96d56Sopenharmony_ci         ``selection()`` no longer takes arguments.  For changing the selection
11827db96d56Sopenharmony_ci         state use the following selection methods.
11837db96d56Sopenharmony_ci
11847db96d56Sopenharmony_ci
11857db96d56Sopenharmony_ci   .. method:: selection_set(*items)
11867db96d56Sopenharmony_ci
11877db96d56Sopenharmony_ci      *items* becomes the new selection.
11887db96d56Sopenharmony_ci
11897db96d56Sopenharmony_ci      .. versionchanged:: 3.6
11907db96d56Sopenharmony_ci         *items* can be passed as separate arguments, not just as a single tuple.
11917db96d56Sopenharmony_ci
11927db96d56Sopenharmony_ci
11937db96d56Sopenharmony_ci   .. method:: selection_add(*items)
11947db96d56Sopenharmony_ci
11957db96d56Sopenharmony_ci      Add *items* to the selection.
11967db96d56Sopenharmony_ci
11977db96d56Sopenharmony_ci      .. versionchanged:: 3.6
11987db96d56Sopenharmony_ci         *items* can be passed as separate arguments, not just as a single tuple.
11997db96d56Sopenharmony_ci
12007db96d56Sopenharmony_ci
12017db96d56Sopenharmony_ci   .. method:: selection_remove(*items)
12027db96d56Sopenharmony_ci
12037db96d56Sopenharmony_ci      Remove *items* from the selection.
12047db96d56Sopenharmony_ci
12057db96d56Sopenharmony_ci      .. versionchanged:: 3.6
12067db96d56Sopenharmony_ci         *items* can be passed as separate arguments, not just as a single tuple.
12077db96d56Sopenharmony_ci
12087db96d56Sopenharmony_ci
12097db96d56Sopenharmony_ci   .. method:: selection_toggle(*items)
12107db96d56Sopenharmony_ci
12117db96d56Sopenharmony_ci      Toggle the selection state of each item in *items*.
12127db96d56Sopenharmony_ci
12137db96d56Sopenharmony_ci      .. versionchanged:: 3.6
12147db96d56Sopenharmony_ci         *items* can be passed as separate arguments, not just as a single tuple.
12157db96d56Sopenharmony_ci
12167db96d56Sopenharmony_ci
12177db96d56Sopenharmony_ci   .. method:: set(item, column=None, value=None)
12187db96d56Sopenharmony_ci
12197db96d56Sopenharmony_ci      With one argument, returns a dictionary of column/value pairs for the
12207db96d56Sopenharmony_ci      specified *item*. With two arguments, returns the current value of the
12217db96d56Sopenharmony_ci      specified *column*. With three arguments, sets the value of given
12227db96d56Sopenharmony_ci      *column* in given *item* to the specified *value*.
12237db96d56Sopenharmony_ci
12247db96d56Sopenharmony_ci
12257db96d56Sopenharmony_ci   .. method:: tag_bind(tagname, sequence=None, callback=None)
12267db96d56Sopenharmony_ci
12277db96d56Sopenharmony_ci      Bind a callback for the given event *sequence* to the tag *tagname*.
12287db96d56Sopenharmony_ci      When an event is delivered to an item, the callbacks for each of the
12297db96d56Sopenharmony_ci      item's tags option are called.
12307db96d56Sopenharmony_ci
12317db96d56Sopenharmony_ci
12327db96d56Sopenharmony_ci   .. method:: tag_configure(tagname, option=None, **kw)
12337db96d56Sopenharmony_ci
12347db96d56Sopenharmony_ci      Query or modify the options for the specified *tagname*.
12357db96d56Sopenharmony_ci
12367db96d56Sopenharmony_ci      If *kw* is not given, returns a dict of the option settings for
12377db96d56Sopenharmony_ci      *tagname*. If *option* is specified, returns the value for that *option*
12387db96d56Sopenharmony_ci      for the specified *tagname*. Otherwise, sets the options to the
12397db96d56Sopenharmony_ci      corresponding values for the given *tagname*.
12407db96d56Sopenharmony_ci
12417db96d56Sopenharmony_ci
12427db96d56Sopenharmony_ci   .. method:: tag_has(tagname, item=None)
12437db96d56Sopenharmony_ci
12447db96d56Sopenharmony_ci      If *item* is specified, returns 1 or 0 depending on whether the specified
12457db96d56Sopenharmony_ci      *item* has the given *tagname*. Otherwise, returns a list of all items
12467db96d56Sopenharmony_ci      that have the specified tag.
12477db96d56Sopenharmony_ci
12487db96d56Sopenharmony_ci      Availability: Tk 8.6
12497db96d56Sopenharmony_ci
12507db96d56Sopenharmony_ci
12517db96d56Sopenharmony_ci   .. method:: xview(*args)
12527db96d56Sopenharmony_ci
12537db96d56Sopenharmony_ci      Query or modify horizontal position of the treeview.
12547db96d56Sopenharmony_ci
12557db96d56Sopenharmony_ci
12567db96d56Sopenharmony_ci   .. method:: yview(*args)
12577db96d56Sopenharmony_ci
12587db96d56Sopenharmony_ci      Query or modify vertical position of the treeview.
12597db96d56Sopenharmony_ci
12607db96d56Sopenharmony_ci
12617db96d56Sopenharmony_ci.. _TtkStyling:
12627db96d56Sopenharmony_ci
12637db96d56Sopenharmony_ciTtk Styling
12647db96d56Sopenharmony_ci-----------
12657db96d56Sopenharmony_ci
12667db96d56Sopenharmony_ciEach widget in :mod:`ttk` is assigned a style, which specifies the set of
12677db96d56Sopenharmony_cielements making up the widget and how they are arranged, along with dynamic
12687db96d56Sopenharmony_ciand default settings for element options. By default the style name is the
12697db96d56Sopenharmony_cisame as the widget's class name, but it may be overridden by the widget's style
12707db96d56Sopenharmony_cioption. If you don't know the class name of a widget, use the method
12717db96d56Sopenharmony_ci:meth:`Misc.winfo_class` (somewidget.winfo_class()).
12727db96d56Sopenharmony_ci
12737db96d56Sopenharmony_ci.. seealso::
12747db96d56Sopenharmony_ci
12757db96d56Sopenharmony_ci   `Tcl'2004 conference presentation <https://tktable.sourceforge.net/tile/tile-tcl2004.pdf>`_
12767db96d56Sopenharmony_ci      This document explains how the theme engine works
12777db96d56Sopenharmony_ci
12787db96d56Sopenharmony_ci
12797db96d56Sopenharmony_ci.. class:: Style
12807db96d56Sopenharmony_ci
12817db96d56Sopenharmony_ci   This class is used to manipulate the style database.
12827db96d56Sopenharmony_ci
12837db96d56Sopenharmony_ci
12847db96d56Sopenharmony_ci   .. method:: configure(style, query_opt=None, **kw)
12857db96d56Sopenharmony_ci
12867db96d56Sopenharmony_ci      Query or set the default value of the specified option(s) in *style*.
12877db96d56Sopenharmony_ci
12887db96d56Sopenharmony_ci      Each key in *kw* is an option and each value is a string identifying
12897db96d56Sopenharmony_ci      the value for that option.
12907db96d56Sopenharmony_ci
12917db96d56Sopenharmony_ci      For example, to change every default button to be a flat button with
12927db96d56Sopenharmony_ci      some padding and a different background color::
12937db96d56Sopenharmony_ci
12947db96d56Sopenharmony_ci         from tkinter import ttk
12957db96d56Sopenharmony_ci         import tkinter
12967db96d56Sopenharmony_ci
12977db96d56Sopenharmony_ci         root = tkinter.Tk()
12987db96d56Sopenharmony_ci
12997db96d56Sopenharmony_ci         ttk.Style().configure("TButton", padding=6, relief="flat",
13007db96d56Sopenharmony_ci            background="#ccc")
13017db96d56Sopenharmony_ci
13027db96d56Sopenharmony_ci         btn = ttk.Button(text="Sample")
13037db96d56Sopenharmony_ci         btn.pack()
13047db96d56Sopenharmony_ci
13057db96d56Sopenharmony_ci         root.mainloop()
13067db96d56Sopenharmony_ci
13077db96d56Sopenharmony_ci
13087db96d56Sopenharmony_ci   .. method:: map(style, query_opt=None, **kw)
13097db96d56Sopenharmony_ci
13107db96d56Sopenharmony_ci      Query or sets dynamic values of the specified option(s) in *style*.
13117db96d56Sopenharmony_ci
13127db96d56Sopenharmony_ci      Each key in *kw* is an option and each value should be a list or a
13137db96d56Sopenharmony_ci      tuple (usually) containing statespecs grouped in tuples, lists, or
13147db96d56Sopenharmony_ci      some other preference. A statespec is a compound of one
13157db96d56Sopenharmony_ci      or more states and then a value.
13167db96d56Sopenharmony_ci
13177db96d56Sopenharmony_ci      An example may make it more understandable::
13187db96d56Sopenharmony_ci
13197db96d56Sopenharmony_ci         import tkinter
13207db96d56Sopenharmony_ci         from tkinter import ttk
13217db96d56Sopenharmony_ci
13227db96d56Sopenharmony_ci         root = tkinter.Tk()
13237db96d56Sopenharmony_ci
13247db96d56Sopenharmony_ci         style = ttk.Style()
13257db96d56Sopenharmony_ci         style.map("C.TButton",
13267db96d56Sopenharmony_ci             foreground=[('pressed', 'red'), ('active', 'blue')],
13277db96d56Sopenharmony_ci             background=[('pressed', '!disabled', 'black'), ('active', 'white')]
13287db96d56Sopenharmony_ci             )
13297db96d56Sopenharmony_ci
13307db96d56Sopenharmony_ci         colored_btn = ttk.Button(text="Test", style="C.TButton").pack()
13317db96d56Sopenharmony_ci
13327db96d56Sopenharmony_ci         root.mainloop()
13337db96d56Sopenharmony_ci
13347db96d56Sopenharmony_ci
13357db96d56Sopenharmony_ci      Note that the order of the (states, value) sequences for an option does
13367db96d56Sopenharmony_ci      matter, if the order is changed to ``[('active', 'blue'), ('pressed',
13377db96d56Sopenharmony_ci      'red')]`` in the foreground option, for example, the result would be a
13387db96d56Sopenharmony_ci      blue foreground when the widget were in active or pressed states.
13397db96d56Sopenharmony_ci
13407db96d56Sopenharmony_ci
13417db96d56Sopenharmony_ci   .. method:: lookup(style, option, state=None, default=None)
13427db96d56Sopenharmony_ci
13437db96d56Sopenharmony_ci      Returns the value specified for *option* in *style*.
13447db96d56Sopenharmony_ci
13457db96d56Sopenharmony_ci      If *state* is specified, it is expected to be a sequence of one or more
13467db96d56Sopenharmony_ci      states. If the *default* argument is set, it is used as a fallback value
13477db96d56Sopenharmony_ci      in case no specification for option is found.
13487db96d56Sopenharmony_ci
13497db96d56Sopenharmony_ci      To check what font a Button uses by default::
13507db96d56Sopenharmony_ci
13517db96d56Sopenharmony_ci         from tkinter import ttk
13527db96d56Sopenharmony_ci
13537db96d56Sopenharmony_ci         print(ttk.Style().lookup("TButton", "font"))
13547db96d56Sopenharmony_ci
13557db96d56Sopenharmony_ci
13567db96d56Sopenharmony_ci   .. method:: layout(style, layoutspec=None)
13577db96d56Sopenharmony_ci
13587db96d56Sopenharmony_ci      Define the widget layout for given *style*. If *layoutspec* is omitted,
13597db96d56Sopenharmony_ci      return the layout specification for given style.
13607db96d56Sopenharmony_ci
13617db96d56Sopenharmony_ci      *layoutspec*, if specified, is expected to be a list or some other
13627db96d56Sopenharmony_ci      sequence type (excluding strings), where each item should be a tuple and
13637db96d56Sopenharmony_ci      the first item is the layout name and the second item should have the
13647db96d56Sopenharmony_ci      format described in `Layouts`_.
13657db96d56Sopenharmony_ci
13667db96d56Sopenharmony_ci      To understand the format, see the following example (it is not
13677db96d56Sopenharmony_ci      intended to do anything useful)::
13687db96d56Sopenharmony_ci
13697db96d56Sopenharmony_ci         from tkinter import ttk
13707db96d56Sopenharmony_ci         import tkinter
13717db96d56Sopenharmony_ci
13727db96d56Sopenharmony_ci         root = tkinter.Tk()
13737db96d56Sopenharmony_ci
13747db96d56Sopenharmony_ci         style = ttk.Style()
13757db96d56Sopenharmony_ci         style.layout("TMenubutton", [
13767db96d56Sopenharmony_ci            ("Menubutton.background", None),
13777db96d56Sopenharmony_ci            ("Menubutton.button", {"children":
13787db96d56Sopenharmony_ci                [("Menubutton.focus", {"children":
13797db96d56Sopenharmony_ci                    [("Menubutton.padding", {"children":
13807db96d56Sopenharmony_ci                        [("Menubutton.label", {"side": "left", "expand": 1})]
13817db96d56Sopenharmony_ci                    })]
13827db96d56Sopenharmony_ci                })]
13837db96d56Sopenharmony_ci            }),
13847db96d56Sopenharmony_ci         ])
13857db96d56Sopenharmony_ci
13867db96d56Sopenharmony_ci         mbtn = ttk.Menubutton(text='Text')
13877db96d56Sopenharmony_ci         mbtn.pack()
13887db96d56Sopenharmony_ci         root.mainloop()
13897db96d56Sopenharmony_ci
13907db96d56Sopenharmony_ci
13917db96d56Sopenharmony_ci   .. method:: element_create(elementname, etype, *args, **kw)
13927db96d56Sopenharmony_ci
13937db96d56Sopenharmony_ci      Create a new element in the current theme, of the given *etype* which is
13947db96d56Sopenharmony_ci      expected to be either "image", "from" or "vsapi". The latter is only
13957db96d56Sopenharmony_ci      available in Tk 8.6a for Windows XP and Vista and is not described here.
13967db96d56Sopenharmony_ci
13977db96d56Sopenharmony_ci      If "image" is used, *args* should contain the default image name followed
13987db96d56Sopenharmony_ci      by statespec/value pairs (this is the imagespec), and *kw* may have the
13997db96d56Sopenharmony_ci      following options:
14007db96d56Sopenharmony_ci
14017db96d56Sopenharmony_ci       * border=padding
14027db96d56Sopenharmony_ci          padding is a list of up to four integers, specifying the left, top,
14037db96d56Sopenharmony_ci          right, and bottom borders, respectively.
14047db96d56Sopenharmony_ci
14057db96d56Sopenharmony_ci       * height=height
14067db96d56Sopenharmony_ci          Specifies a minimum height for the element. If less than zero, the
14077db96d56Sopenharmony_ci          base image's height is used as a default.
14087db96d56Sopenharmony_ci
14097db96d56Sopenharmony_ci       * padding=padding
14107db96d56Sopenharmony_ci          Specifies the element's interior padding. Defaults to border's value
14117db96d56Sopenharmony_ci          if not specified.
14127db96d56Sopenharmony_ci
14137db96d56Sopenharmony_ci       * sticky=spec
14147db96d56Sopenharmony_ci          Specifies how the image is placed within the final parcel. spec
14157db96d56Sopenharmony_ci          contains zero or more characters "n", "s", "w", or "e".
14167db96d56Sopenharmony_ci
14177db96d56Sopenharmony_ci       * width=width
14187db96d56Sopenharmony_ci          Specifies a minimum width for the element. If less than zero, the
14197db96d56Sopenharmony_ci          base image's width is used as a default.
14207db96d56Sopenharmony_ci
14217db96d56Sopenharmony_ci      If "from" is used as the value of *etype*,
14227db96d56Sopenharmony_ci      :meth:`element_create` will clone an existing
14237db96d56Sopenharmony_ci      element. *args* is expected to contain a themename, from which
14247db96d56Sopenharmony_ci      the element will be cloned, and optionally an element to clone from.
14257db96d56Sopenharmony_ci      If this element to clone from is not specified, an empty element will
14267db96d56Sopenharmony_ci      be used. *kw* is discarded.
14277db96d56Sopenharmony_ci
14287db96d56Sopenharmony_ci
14297db96d56Sopenharmony_ci   .. method:: element_names()
14307db96d56Sopenharmony_ci
14317db96d56Sopenharmony_ci      Returns the list of elements defined in the current theme.
14327db96d56Sopenharmony_ci
14337db96d56Sopenharmony_ci
14347db96d56Sopenharmony_ci   .. method:: element_options(elementname)
14357db96d56Sopenharmony_ci
14367db96d56Sopenharmony_ci      Returns the list of *elementname*'s options.
14377db96d56Sopenharmony_ci
14387db96d56Sopenharmony_ci
14397db96d56Sopenharmony_ci   .. method:: theme_create(themename, parent=None, settings=None)
14407db96d56Sopenharmony_ci
14417db96d56Sopenharmony_ci      Create a new theme.
14427db96d56Sopenharmony_ci
14437db96d56Sopenharmony_ci      It is an error if *themename* already exists. If *parent* is specified,
14447db96d56Sopenharmony_ci      the new theme will inherit styles, elements and layouts from the parent
14457db96d56Sopenharmony_ci      theme. If *settings* are present they are expected to have the same
14467db96d56Sopenharmony_ci      syntax used for :meth:`theme_settings`.
14477db96d56Sopenharmony_ci
14487db96d56Sopenharmony_ci
14497db96d56Sopenharmony_ci   .. method:: theme_settings(themename, settings)
14507db96d56Sopenharmony_ci
14517db96d56Sopenharmony_ci      Temporarily sets the current theme to *themename*, apply specified
14527db96d56Sopenharmony_ci      *settings* and then restore the previous theme.
14537db96d56Sopenharmony_ci
14547db96d56Sopenharmony_ci      Each key in *settings* is a style and each value may contain the keys
14557db96d56Sopenharmony_ci      'configure', 'map', 'layout' and 'element create' and they are expected
14567db96d56Sopenharmony_ci      to have the same format as specified by the methods
14577db96d56Sopenharmony_ci      :meth:`Style.configure`, :meth:`Style.map`, :meth:`Style.layout` and
14587db96d56Sopenharmony_ci      :meth:`Style.element_create` respectively.
14597db96d56Sopenharmony_ci
14607db96d56Sopenharmony_ci      As an example, let's change the Combobox for the default theme a bit::
14617db96d56Sopenharmony_ci
14627db96d56Sopenharmony_ci         from tkinter import ttk
14637db96d56Sopenharmony_ci         import tkinter
14647db96d56Sopenharmony_ci
14657db96d56Sopenharmony_ci         root = tkinter.Tk()
14667db96d56Sopenharmony_ci
14677db96d56Sopenharmony_ci         style = ttk.Style()
14687db96d56Sopenharmony_ci         style.theme_settings("default", {
14697db96d56Sopenharmony_ci            "TCombobox": {
14707db96d56Sopenharmony_ci                "configure": {"padding": 5},
14717db96d56Sopenharmony_ci                "map": {
14727db96d56Sopenharmony_ci                    "background": [("active", "green2"),
14737db96d56Sopenharmony_ci                                   ("!disabled", "green4")],
14747db96d56Sopenharmony_ci                    "fieldbackground": [("!disabled", "green3")],
14757db96d56Sopenharmony_ci                    "foreground": [("focus", "OliveDrab1"),
14767db96d56Sopenharmony_ci                                   ("!disabled", "OliveDrab2")]
14777db96d56Sopenharmony_ci                }
14787db96d56Sopenharmony_ci            }
14797db96d56Sopenharmony_ci         })
14807db96d56Sopenharmony_ci
14817db96d56Sopenharmony_ci         combo = ttk.Combobox().pack()
14827db96d56Sopenharmony_ci
14837db96d56Sopenharmony_ci         root.mainloop()
14847db96d56Sopenharmony_ci
14857db96d56Sopenharmony_ci
14867db96d56Sopenharmony_ci   .. method:: theme_names()
14877db96d56Sopenharmony_ci
14887db96d56Sopenharmony_ci      Returns a list of all known themes.
14897db96d56Sopenharmony_ci
14907db96d56Sopenharmony_ci
14917db96d56Sopenharmony_ci   .. method:: theme_use(themename=None)
14927db96d56Sopenharmony_ci
14937db96d56Sopenharmony_ci      If *themename* is not given, returns the theme in use.  Otherwise, sets
14947db96d56Sopenharmony_ci      the current theme to *themename*, refreshes all widgets and emits a
14957db96d56Sopenharmony_ci      <<ThemeChanged>> event.
14967db96d56Sopenharmony_ci
14977db96d56Sopenharmony_ci
14987db96d56Sopenharmony_ciLayouts
14997db96d56Sopenharmony_ci^^^^^^^
15007db96d56Sopenharmony_ci
15017db96d56Sopenharmony_ciA layout can be just ``None``, if it takes no options, or a dict of
15027db96d56Sopenharmony_cioptions specifying how to arrange the element. The layout mechanism
15037db96d56Sopenharmony_ciuses a simplified version of the pack geometry manager: given an
15047db96d56Sopenharmony_ciinitial cavity, each element is allocated a parcel. Valid
15057db96d56Sopenharmony_cioptions/values are:
15067db96d56Sopenharmony_ci
15077db96d56Sopenharmony_ci * side: whichside
15087db96d56Sopenharmony_ci    Specifies which side of the cavity to place the element; one of
15097db96d56Sopenharmony_ci    top, right, bottom or left. If omitted, the element occupies the
15107db96d56Sopenharmony_ci    entire cavity.
15117db96d56Sopenharmony_ci
15127db96d56Sopenharmony_ci * sticky: nswe
15137db96d56Sopenharmony_ci    Specifies where the element is placed inside its allocated parcel.
15147db96d56Sopenharmony_ci
15157db96d56Sopenharmony_ci * unit: 0 or 1
15167db96d56Sopenharmony_ci    If set to 1, causes the element and all of its descendants to be treated as
15177db96d56Sopenharmony_ci    a single element for the purposes of :meth:`Widget.identify` et al. It's
15187db96d56Sopenharmony_ci    used for things like scrollbar thumbs with grips.
15197db96d56Sopenharmony_ci
15207db96d56Sopenharmony_ci * children: [sublayout... ]
15217db96d56Sopenharmony_ci    Specifies a list of elements to place inside the element. Each
15227db96d56Sopenharmony_ci    element is a tuple (or other sequence type) where the first item is
15237db96d56Sopenharmony_ci    the layout name, and the other is a `Layout`_.
15247db96d56Sopenharmony_ci
15257db96d56Sopenharmony_ci.. _Layout: `Layouts`_
1526