tkinter.ttk — Tk themed widgets

Вихідний код: Lib/tkinter/ttk.py


The tkinter.ttk module provides access to the Tk themed widget set, introduced in Tk 8.5. It provides additional benefits including anti-aliased font rendering under X11 and window transparency (requiring a composition window manager on X11).

The basic idea for tkinter.ttk is to separate, to the extent possible, the code implementing a widget’s behavior from the code implementing its appearance.

Added in version 3.1.

Дивись також

Tk Widget Styling Support

Документ, який представляє підтримку тем для Tk

Використання Ttk

Щоб почати використовувати Ttk, імпортуйте його модуль:

from tkinter import ttk

Щоб замінити базові віджети Tk, імпорт має слідувати за імпортом Tk:

from tkinter import *
from tkinter.ttk import *

That code causes several tkinter.ttk widgets (Button, Checkbutton, Entry, Frame, Label, LabelFrame, Menubutton, PanedWindow, Radiobutton, Scale and Scrollbar) to automatically replace the Tk widgets.

This has the direct benefit of using the new widgets which gives a better look and feel across platforms; however, the replacement widgets are not completely compatible. The main difference is that widget options such as «fg», «bg» and others related to widget styling are no longer present in Ttk widgets. Instead, use the ttk.Style class for improved styling effects.

Дивись також

Converting existing applications to use Tile widgets

Монографія (з використанням термінології Tcl) про відмінності, які зазвичай виникають під час переміщення програм на використання нових віджетів.

Ttk widgets

Ttk поставляється з 18 віджетами, дванадцять із яких уже існували в tkinter: Button, Checkbutton, Entry, Frame, Label, LabelFrame, Menubutton, PanedWindow, Radiobutton, Scale, Scrollbar і Spinbox. Інші шість нові: Combobox, Notebook, Progressbar, Separator, Sizegrip і Treeview. І всі вони є підкласами Widget.

Використання віджетів Ttk покращує зовнішній вигляд програми. Як обговорювалося вище, існують відмінності в тому, як кодується стиль.

Tk код:

l1 = tkinter.Label(text="Test", fg="black", bg="white")
l2 = tkinter.Label(text="Test", fg="black", bg="white")

Код Ttk:

style = ttk.Style()
style.configure("BW.TLabel", foreground="black", background="white")

l1 = ttk.Label(text="Test", style="BW.TLabel")
l2 = ttk.Label(text="Test", style="BW.TLabel")

Щоб дізнатися більше про TtkStyling, перегляньте документацію класу Style.

Віджет

ttk.Widget defines standard options and methods supported by Tk themed widgets and is not supposed to be directly instantiated.

Standard options

All the ttk Widgets accept the following options:

Варіант

опис

клас

Визначає клас вікна. Клас використовується під час запиту бази даних параметрів щодо інших параметрів вікна, щоб визначити теги прив’язки за замовчуванням для вікна та вибрати типовий макет і стиль віджета. Цей параметр доступний лише для читання, і його можна вказати лише під час створення вікна.

курсор

Specifies the mouse cursor to be used for the widget. If set to the empty string (the default), the cursor is inherited from the parent widget.

зосередитися

Визначає, чи вікно приймає фокус під час обходу клавіатури. Повертається 0, 1 або порожній рядок. Якщо повертається 0, це означає, що вікно слід повністю пропустити під час обходу клавіатури. Якщо 1, це означає, що вікно має отримувати фокус введення, поки воно доступне для перегляду. А порожній рядок означає, що сценарії обходу приймають рішення про те, фокусуватись на вікні чи ні.

стиль

Може використовуватися для визначення власного стилю віджета.

Scrollable widget options

Наступні параметри підтримуються віджетами, якими керує смуга прокрутки.

Варіант

опис

xscrollcommand

Використовується для зв’язку з горизонтальними смугами прокручування.

When the view in the widget’s window changes, the widget calls the xscrollcommand callback.

Usually this option consists of the method Scrollbar.set of some scrollbar. This will cause the scrollbar to be updated whenever the view in the window changes.

yscrollcommand

Використовується для зв’язку з вертикальними смугами прокручування. Додаткову інформацію див. вище.

Label options

Наступні параметри підтримуються мітками, кнопками та іншими кнопкоподібними віджетами.

Варіант

опис

текст

Визначає текстовий рядок, який буде відображатися всередині віджета.

текстова змінна

Визначає ім’я, значення якого використовуватиметься замість текстового параметра ресурсу.

підкреслити

Якщо встановлено, вказує індекс (від 0) символу, який потрібно підкреслити в текстовому рядку. Символ підкреслення використовується для мнемонічної активації.

зображення

Визначає зображення для відображення. Це список з 1 або більше елементів. Першим елементом є назва зображення за замовчуванням. Решта списку — це послідовність пар станів/значення, як визначено Style.map(), із зазначенням різних зображень для використання, коли віджет перебуває в певному стані або комбінації станів. Усі зображення в списку повинні мати однаковий розмір.

з’єднання

Визначає спосіб відображення зображення відносно тексту, якщо присутні параметри як тексту, так і зображень. Допустимі значення:

  • текст: відображати лише текст

  • зображення: відображати лише зображення

  • зверху, знизу, зліва, справа: відображення зображення вище, нижче, ліворуч або праворуч від тексту відповідно.

  • немає: за замовчуванням. відобразити зображення, якщо воно є, інакше текст.

ширина

Якщо значення більше нуля, указує, скільки місця (у ширині символів) потрібно виділити для текстової мітки, якщо значення менше нуля, указує мінімальну ширину. Якщо дорівнює нулю або не вказано, використовується природна ширина текстової мітки.

Compatibility options

Варіант

опис

стан

Може бути встановлено на «normal» або «disabled» для керування бітом стану «disabled». Це параметр лише для запису: його встановлення змінює стан віджета, але метод Widget.state() не впливає на цей параметр.

Widget states

Стан віджета - це растрова карта незалежних прапорів стану.

Прапор

опис

активний

Курсор миші знаходиться над віджетом, і натискання кнопки миші призведе до виконання певної дії

вимкнено

Віджет вимкнено під керуванням програми

фокус

Віджет має фокус клавіатури

натиснутий

Віджет натискається

вибрано

«Увімкнено», «справжнє» або «поточне» для таких речей, як Checkbuttons і радіокнопки

фон

Windows і Mac мають поняття «активного» або вікна переднього плану. Фоновий стан встановлено для віджетів у фоновому вікні та знято для віджетів у вікні переднього плану

лише для читання

Віджет не повинен дозволяти змінювати користувач

чергувати

Альтернативний формат відображення для віджетів

недійсний

Значення віджета недійсне

Специфікація стану — це послідовність назв станів, необов’язково із знаком оклику, який вказує, що біт вимкнено.

ttk.Віджет

Besides the methods described below, the ttk.Widget supports the methods tkinter.Widget.cget and tkinter.Widget.configure.

class tkinter.ttk.Widget
identify(x, y)

Повертає назву елемента в позиції x y або порожній рядок, якщо точка не лежить у жодному елементі.

x і y — координати пікселів відносно віджета.

instate(statespec, callback=None, *args, **kw)

Перевірте стан віджета. Якщо зворотний виклик не вказано, повертає True, якщо стан віджета відповідає statespec, і False в іншому випадку. Якщо вказано зворотний виклик, він викликається з аргументами, якщо стан віджета відповідає statespec.

state(statespec=None)

Modify or inquire widget state. If statespec is specified, sets the widget state according to it and return a new statespec indicating which flags were changed. If statespec is not specified, returns the currently enabled state flags.

Not to be confused with Wm.state.

statespec зазвичай буде списком або кортежем.

Комбінований список

The ttk.Combobox widget combines a text field with a pop-down list of values. This widget is a subclass of Entry.

Besides the methods inherited from Widget: cget(), configure(), identify(), instate() and state(), and the following inherited from Entry: bbox(), delete(), icursor(), index(), insert(), selection*, xview*, it has some other methods, described at ttk.Combobox.

Опції

Цей віджет підтримує такі конкретні параметри:

Варіант

опис

експортний вибір

Boolean value. If set, the widget selection is linked to the X selection (which can be returned by invoking Misc.selection_get, for example).

виправдати

Визначає спосіб вирівнювання тексту у віджеті. Один із «лівих», «центральних» або «правих».

висота

Визначає висоту розкривного списку в рядках.

посткоманд

Сценарій (можливо, зареєстрований у Misc.register), який викликається безпосередньо перед відображенням значень. Він може вказувати, які значення відображати.

стан

One of «normal», «readonly», or «disabled». In the «readonly» state, the value may not be edited directly, and the user can only select one of the values from the dropdown list. In the «normal» state, the text field is directly editable. In the «disabled» state, no interaction is possible.

текстова змінна

Визначає ім’я, значення якого пов’язане зі значенням віджета. Щоразу, коли змінюється значення, пов’язане з цією назвою, значення віджета оновлюється, і навпаки. Див. tkinter.StringVar.

значення

Визначає список значень для відображення у розкривному списку.

ширина

Визначає ціле число, що вказує бажану ширину вікна введення, у середніх символах шрифту віджета.

Примітка

Tk 9.1 added the locale option, which selects the locale used to determine word and character boundaries within the text ("C" by default).

Віртуальні події

Віджети зі списком генерують віртуальну подію <<ComboboxSelected>>, коли користувач вибирає елемент зі списку значень.

ttk.Combobox

class tkinter.ttk.Combobox
current(newindex=None)

Якщо вказано newindex, встановлює значення поля зі списком на позицію елемента newindex. В іншому випадку повертає індекс поточного значення або -1, якщо поточного значення немає в списку значень.

get()

Повертає поточне значення поля зі списком.

set(value)

Встановлює для поля зі списком значення value.

Spinbox

The ttk.Spinbox widget is a ttk.Entry enhanced with increment and decrement arrows. It can be used for numbers or lists of string values. This widget is a subclass of Entry. Besides the methods inherited from Widget: cget(), configure(), identify(), instate() and state(), and the following inherited from Entry: bbox(), delete(), icursor(), index(), insert(), xview*, it has some other methods, described at ttk.Spinbox.

Опції

Цей віджет підтримує такі конкретні параметри:

Варіант

опис

від

Плаваюче значення. Якщо встановлено, це мінімальне значення, до якого зменшуватиметься кнопка зменшення. Має бути написано як from_, коли використовується як аргумент, оскільки from є ключовим словом Python.

до

Плаваюче значення. Якщо встановлено, це максимальне значення, до якого збільшиться кнопка збільшення.

приріст

Плаваюче значення. Визначає величину, на яку кнопки збільшення/зменшення змінюють значення. За замовчуванням 1.0.

значення

Послідовність рядкових чи плаваючих значень. Якщо вказано, кнопки збільшення/зменшення перемикатимуть елементи в цій послідовності, а не збільшуватимуть чи зменшуватимуть числа.

загорнути

Логічне значення. Якщо True, кнопки збільшення та зменшення циклічно переключатимуться від значення до до значення від або значення від до значення до відповідно.

формат

Рядкове значення. Це визначає формат чисел, встановлений кнопками збільшення/зменшення. Він має бути у формі «%W.Pf», де W — доповнена ширина значення, P — точність, а «%» і «f» — літерали.

команда

Можливість виклику Python. Викликатиметься без аргументів щоразу, коли натиснуто одну з кнопок збільшення чи зменшення.

Віртуальні події

Віджет Spinbox генерує віртуальну подію <<Increment>>, коли користувач натискає <Up> , і віртуальну подію <<Decrement>>, коли користувач натискає <Down> .

ttk.Spinbox

class tkinter.ttk.Spinbox

With a non-integer increment, see numeric values and the locale.

Added in version 3.8.

get()

Повертає поточне значення поля обертання.

set(value)

Встановлює для поля обертання значення value.

Ноутбук

Ttk Notebook widget manages a collection of windows and displays a single one at a time. Each child window is associated with a tab, which the user may select to change the currently displayed window.

Опції

Цей віджет підтримує такі конкретні параметри:

Варіант

опис

висота

Якщо присутнє та більше нуля, визначає бажану висоту області панелі (не враховуючи внутрішні відступи чи вкладки). В іншому випадку використовується максимальна висота всіх панелей.

оббивка

Визначає обсяг додаткового простору, який потрібно додати навколо зовнішньої сторони блокнота. Відступ — це список до чотирьох специфікацій довжини зліва зверху справа знизу. Якщо вказано менше чотирьох елементів, нижній за замовчуванням — верхній, правий — лівий, верхній — лівий.

ширина

Якщо присутня та більша за нуль, указується бажана ширина області панелі (не враховуючи внутрішні відступи). В іншому випадку використовується максимальна ширина всіх панелей.

Tab options

Існують також спеціальні параметри для вкладок:

Варіант

опис

стан

Або «нормальний», «відключений» або «прихований». Якщо «вимкнуто», вкладка не доступна для вибору. Якщо «приховано», вкладка не відображається.

липкий

Specifies how the child window is positioned within the pane area. Value is a string containing zero or more of the characters «n», «s», «e» or «w». Each letter refers to a side (north, south, east or west) that the child window will stick to, as per the grid geometry manager.

оббивка

Визначає обсяг додаткового простору, який потрібно додати між блокнотом і цією панеллю. Синтаксис такий самий, як і для параметра padding, який використовується цим віджетом.

текст

Визначає текст для відображення на вкладці.

зображення

Визначає зображення для відображення на вкладці. Перегляньте зображення опції, описане у Widget.

з’єднання

Визначає спосіб відображення зображення відносно тексту, якщо присутні обидва параметри – текст і зображення. Перегляньте Label Options для правових значень.

підкреслити

Визначає індекс (від нуля) символу, який потрібно підкреслити в текстовому рядку. Підкреслений символ використовується для мнемонічної активації, якщо викликається Notebook.enable_traversal().

Tab identifiers

The tab_id present in several methods of ttk.Notebook may take any of the following forms:

  • Ціле число від нуля до кількості вкладок

  • Ім’я дочірнього вікна

  • Позиційна специфікація у формі «@x,y», яка ідентифікує вкладку

  • The literal string «current», which identifies the currently selected tab

  • Рядок літералу «end», який повертає кількість вкладок (дійсно лише для Notebook.index())

Віртуальні події

Цей віджет генерує віртуальну подію <<NotebookTabChanged>> після вибору нової вкладки.

ттк.Зошит

class tkinter.ttk.Notebook
add(child, **kw)

Додає нову вкладку до блокнота.

Якщо вікно наразі керується блокнотом, але приховано, воно повертається до попереднього положення.

Перегляньте Параметри вкладки (Tab Options), щоб переглянути список доступних параметрів.

forget(tab_id)

Видаляє вкладку, визначену tab_id, скасовує відповідне вікно та скасовує керування ним.

This shadows the inherited geometry-manager forget(); use pack_forget(), grid_forget() or place_forget() to remove the widget itself from its manager.

hide(tab_id)

Приховує вкладку, визначену tab_id.

Вкладка не відображатиметься, але пов’язане вікно й надалі керуватиметься ноутбуком, а його конфігурація буде збережена. Приховані вкладки можна відновити за допомогою команди add().

identify(x, y)

Повертає назву елемента вкладки в позиції x, y або порожній рядок, якщо його немає.

index(tab_id)

Повертає числовий індекс вкладки, визначеної tab_id, або загальну кількість вкладок, якщо tab_id є рядком «end».

insert(pos, child, **kw)

Вставляє панель у вказане місце.

pos — це рядок «end», цілочисельний індекс або ім’я керованого дочірнього елемента. Якщо child вже керується блокнотом, переміщує його у вказане положення.

Перегляньте Параметри вкладки (Tab Options), щоб переглянути список доступних параметрів.

select(tab_id=None)

Вибирає вказаний tab_id.

The associated child window will be displayed, and the previously selected window (if different) is unmapped. If tab_id is omitted, returns the widget name of the currently selected pane.

tab(tab_id, option=None, **kw)

Запитайте або змініть параметри конкретного tab_id.

Якщо kw не вказано, повертає словник значень параметрів вкладки. Якщо вказано option, повертає значення цього option. В іншому випадку встановіть параметрам відповідні значення.

tabs()

Returns a tuple of windows managed by the notebook.

enable_traversal()

Увімкнути обхід клавіатури для вікна верхнього рівня, що містить цей блокнот.

Це розширить прив’язки для вікна верхнього рівня, що містить блокнот, наступним чином:

  • Control-Tab: вибирає вкладку, наступну за поточною.

  • Shift-Control-Tab: вибирає вкладку, що передує поточній вибраній.

  • Alt-K: де K — мнемонічний (підкреслений) символ будь-якої вкладки, вибере цю вкладку.

Multiple notebooks in a single toplevel may be enabled for traversal, including nested notebooks. However, notebook traversal only works properly if all panes are direct children of the notebook.

Індикатор виконання

The ttk.Progressbar widget shows the status of a long-running operation. It can operate in two modes: 1) the determinate mode which shows the amount completed relative to the total amount of work to be done and 2) the indeterminate mode which provides an animated display to let the user know that work is progressing.

Опції

Цей віджет підтримує такі конкретні параметри:

Варіант

опис

схід

Один із «горизонтальних» або «вертикальних». Визначає орієнтацію індикатора виконання.

довжина

Визначає довжину довгої осі індикатора перебігу (ширина, якщо горизонтальна, висота, якщо вертикальна).

режим

Один із «визначених» або «невизначених».

максимум

Число, що визначає максимальне значення. За замовчуванням 100.

значення

Поточне значення індикатора виконання. У «визначеному» режимі це означає обсяг виконаної роботи. У «невизначеному» режимі воно інтерпретується як максимум за модулем; тобто індикатор прогресу завершує один «цикл», коли його значення збільшується на максимум.

змінна

Ім’я, пов’язане зі значенням опції. Якщо вказано, значення індикатора виконання автоматично встановлюється на значення цього імені щоразу, коли останнє змінюється.

фаза

Опція лише для читання. Віджет періодично збільшує значення цього параметра щоразу, коли його значення перевищує 0, а в режимі визначення менше максимального. Цей параметр може використовуватися поточною темою для надання додаткових ефектів анімації.

ttk.Прогрессбар

class tkinter.ttk.Progressbar
start(interval=None)

Почати режим автоінкременту: планує повторювану подію таймера, яка викликає Progressbar.step() кожні інтервал мілісекунд. Якщо опущено, інтервал за замовчуванням становить 50 мілісекунд.

step(amount=None)

Збільшує значення індикатора виконання на кількість.

кількість за замовчуванням дорівнює 1,0, якщо опущено.

stop()

Зупинити режим автозбільшення: скасовує будь-яку повторювану подію таймера, ініційовану Progressbar.start() для цього рядка виконання.

Роздільник

The ttk.Separator widget displays a horizontal or vertical separator bar.

It has no other methods besides the ones inherited from ttk.Widget.

Опції

Цей віджет підтримує такі конкретні параметри:

Варіант

опис

схід

Один із «горизонтальних» або «вертикальних». Визначає орієнтацію роздільника.

Sizegrip

The ttk.Sizegrip widget (also known as a grow box) allows the user to resize the containing toplevel window by pressing and dragging the grip.

This widget has neither specific options nor specific methods, besides the ones inherited from ttk.Widget.

Примітки щодо платформи

  • У macOS вікна верхнього рівня автоматично містять вбудовану ручку розміру за замовчуванням. Додавання Sizegrip нешкідливо, оскільки вбудована рукоятка лише маскує віджет.

помилки

  • If the containing toplevel’s position was specified relative to the right or bottom of the screen (for example, ….), the Sizegrip widget will not resize the window.

  • Цей віджет підтримує зміну розміру лише на «південний схід».

Treeview

The ttk.Treeview widget displays a hierarchical collection of items. Each item has a textual label, an optional image, and an optional list of data values. The data values are displayed in successive columns after the tree label.

Порядок, у якому відображаються значення даних, можна контролювати за допомогою параметра віджета displaycolumns. Віджет дерева також може відображати заголовки стовпців. Доступ до стовпців можна отримати за номерами або символьними іменами, указаними в стовпцях параметрів віджета. Перегляньте Ідентифікатори стовпців (Column Identifiers).

Кожен елемент ідентифікується унікальною назвою. Віджет генеруватиме ідентифікатори елементів, якщо вони не надані абонентом. Існує виділений кореневий елемент під назвою {}. Сам кореневий елемент не відображається; його діти з’являються на верхньому рівні ієрархії.

Кожен елемент також має список тегів, які можна використовувати для пов’язування прив’язок подій до окремих елементів і керування зовнішнім виглядом елемента.

Віджет Treeview підтримує горизонтальне та вертикальне прокручування відповідно до параметрів, описаних у розділі Параметри прокручуваних віджетів, і методів Treeview.xview() і Treeview.yview().

Опції

Цей віджет підтримує такі конкретні параметри:

Варіант

опис

колонки

Список ідентифікаторів стовпців із зазначенням кількості стовпців та їхніх імен.

відображення стовпців

Список ідентифікаторів стовпців (символічних або цілочисельних індексів), що вказують, які стовпці даних відображаються та порядок, у якому вони з’являються, або рядок «#all».

висота

Визначає кількість рядків, які мають бути видимими. Примітка: необхідна ширина визначається із суми ширин стовпців.

оббивка

Визначає внутрішнє доповнення для віджета. Заповнення — це список із до чотирьох специфікацій довжини.

selectmode

Керує тим, як вбудовані зв’язки класів керують виділенням. Один із варіантів: «розширений», «перегляд» або «немає». Якщо встановлено значення «розширений» (за замовчуванням), можна вибрати кілька елементів. Якщо вибрати «перегляд», одночасно буде вибрано лише один елемент. Якщо «немає», вибір не буде змінено.

Зауважте, що код програми та прив’язки тегів можуть налаштовувати вибір як завгодно, незалежно від значення цього параметра.

шоу

Список, що містить нуль або більше з наведених нижче значень, що визначає, які елементи дерева відображати.

  • дерево: відображати мітки дерева в стовпці №0.

  • заголовки: відображення рядка заголовка.

The default is «tree headings», that is, show all elements.

Примітка: стовпець №0 завжди стосується стовпця дерева, навіть якщо show=»tree» не вказано.

Примітка

Tk 9.0 added several Treeview features. The selectmode option gained the values "single" and "multiple"; the new widget options selecttype ("item" or "cell" selection), striped (zebra-striped rows), and titlecolumns / titleitems (columns or rows frozen against scrolling) were introduced; and items gained a hidden option. Tk 9.1 added the rowheight and headingheight options.

Item options

Наведені нижче параметри можна вказати для елементів у командах віджета вставки та елемента.

Варіант

опис

текст

Текстова мітка для відображення елемента.

зображення

Зображення Tk, що відображається ліворуч від мітки.

значення

Список значень, пов’язаних з елементом.

Кожен елемент має мати таку ж кількість значень, як і стовпці параметрів віджета. Якщо значень менше, ніж стовпців, решта значень вважатиметься порожніми. Якщо значень більше, ніж стовпців, додаткові значення ігноруються.

ВІДЧИНЕНО

Значення True/False, що вказує, чи потрібно відображати або приховувати дочірні елементи елемента.

теги

Список тегів, пов’язаних із цим елементом.

Tag options

На тегах можуть бути вказані такі параметри:

Варіант

опис

передній план

Визначає колір переднього плану тексту.

фон

Визначає колір тла клітинки або елемента.

шрифт

Визначає шрифт для малювання тексту.

зображення

Визначає зображення елемента, якщо параметр зображення елемента порожній.

Column identifiers

Ідентифікатори стовпців приймають будь-яку з таких форм:

  • Символічне ім’я зі списку параметрів стовпців.

  • Ціле число n, що визначає n-й стовпець даних.

  • Рядок у формі #n, де n — ціле число, що визначає n-й стовпець відображення.

Примітки:

  • Значення параметрів елемента можуть відображатися в іншому порядку, ніж порядок, у якому вони зберігаються.

  • Стовпець #0 завжди відноситься до стовпця дерева, навіть якщо show=»tree» не вказано.

Номер стовпця даних є індексом у списку значень параметрів елемента; номер стовпця відображення — це номер стовпця в дереві, де відображаються значення. Мітки дерева відображаються у стовпці №0. Якщо параметр displaycolumns не встановлено, стовпець даних n відображається в стовпці #n+1. Знову ж таки, стовпець №0 завжди відноситься до стовпця дерева.

Віртуальні події

Віджет Treeview генерує такі віртуальні події.

Подія

опис

<<TreeviewSelect>>

Генерується кожного разу, коли вибір змінюється.

<<TreeviewOpen>>

Створено безпосередньо перед налаштуванням елемента фокусу для відкриття=True.

<<TreeviewClose>>

Згенеровано одразу після встановлення для елемента фокусу значення open=False.

Методи Treeview.focus() і Treeview.selection() можна використовувати для визначення постраждалого елемента або елементів.

ttk.Treeview

class tkinter.ttk.Treeview
bbox(item, column=None)

Повертає обмежувальну рамку (відносно вікна віджета перегляду дерева) зазначеного елемента у формі (x, y, ширина, висота).

If column is specified, returns the bounding box of that cell. If the item is not visible (that is, if it is a descendant of a closed item or is scrolled offscreen), returns an empty string.

This shadows the inherited Misc.bbox(); use grid_bbox() for the grid bounding box.

get_children(item=None)

Returns a tuple of children belonging to item.

Якщо item не вказано, повертає кореневих дітей.

set_children(item, *newchildren)

Replaces item’s children with newchildren.

Діти, присутні в item, яких немає в newchilders, від’єднуються від дерева. Жоден елемент у newchildren не може бути предком item. Зауважте, що якщо не вказати newchilders, дочірні елементи item будуть від’єднані.

column(column, option=None, **kw)

Запитайте або змініть параметри для вказаного стовпця.

Якщо kw не вказано, повертає dict значень параметрів стовпця. Якщо вказано опцію, повертається значення для цієї опції. В іншому випадку встановіть параметрам відповідні значення.

Допустимі параметри/значення:

id

Повертає назву стовпця. Це опція лише для читання.

anchor: One of the standard Tk anchor values.

Визначає, як має бути вирівняний текст у цьому стовпці відносно клітинки.

minwidth: width

Мінімальна ширина стовпця в пікселях. Віджет перегляду дерева не зробить стовпець меншим, ніж визначено цією опцією, коли розмір віджета змінюється або користувач перетягує стовпець.

stretch: True/False

Визначає, чи слід регулювати ширину стовпця під час зміни розміру віджета.

width: width

Ширина стовпця в пікселях.

Щоб налаштувати стовпець дерева, викличте його за допомогою column = «#0»

delete(*items)

Видалити всі вказані елементи та всіх їхніх нащадків.

Кореневий елемент не можна видалити.

detach(*items)

Від’єднує всі вказані елементи від дерева.

Елементи та всі їхні нащадки все ще присутні та можуть бути повторно вставлені в іншу точку дерева, але не відображатимуться.

Кореневий елемент не можна від’єднувати.

exists(item)

Returns True if the specified item is present in the tree, False otherwise.

focus(item=None)

Якщо вказано item, встановлює елемент фокуса на item. В іншому випадку повертає поточний елемент фокусу або „“, якщо його немає.

This shadows the inherited Misc.focus(); use focus_set() to focus the widget itself.

heading(column, option=None, **kw)

Запитайте або змініть параметри заголовка для вказаного стовпця.

Якщо kw не вказано, повертає dict значень опції заголовка. Якщо вказано параметр, повертається значення для цього параметра. В іншому випадку встановіть параметрам відповідні значення.

Допустимі параметри/значення:

text: text

Текст для відображення в заголовку стовпця.

image: imageName

Визначає зображення, яке відображатиметься праворуч від заголовка стовпця.

anchor: anchor

Визначає, як має бути вирівняний текст заголовка. Одне зі стандартних значень прив’язки Tk.

command: callback

Зворотний виклик, що викликається, коли натискається мітка заголовка.

Щоб налаштувати заголовок стовпця дерева, викличте його за допомогою column = «#0».

identify(component, x, y)

Повертає опис зазначеного компонента під точкою, заданою x та y, або порожній рядок, якщо такого компонента немає в цій позиції.

identify_row(y)

Повертає ідентифікатор елемента в позиції y.

identify_column(x)

Returns the display column identifier of the cell at position x.

Стовпець дерева має ID #0.

identify_region(x, y)

Повертає одне з:

область

значення

заголовок

Область заголовка дерева.

сепаратор

Пробіл між заголовками двох стовпців.

дерево

Зона дерев.

клітина

Комірка даних.

Наявність: Tk 8.6.

identify_element(x, y)

Повертає елемент у позиції x, y.

Наявність: Tk 8.6.

index(item)

Повертає цілочисельний індекс item у батьківському списку дочірніх елементів.

insert(parent, index, iid=None, **kw)

Створює новий елемент і повертає ідентифікатор елемента щойно створеного елемента.

parent — це ідентифікатор елемента батьківського елемента або порожній рядок для створення нового елемента верхнього рівня. index — це ціле число або значення «end», що вказує, куди в списку дочірніх елементів потрібно вставити новий елемент. Якщо index менше або дорівнює нулю, новий вузол вставляється на початку; якщо index більше або дорівнює поточній кількості дітей, він вставляється в кінці. Якщо вказано iid, він використовується як ідентифікатор елемента; iid не повинен існувати в дереві. В іншому випадку генерується новий унікальний ідентифікатор.

See Item Options for the list of available options.

item(item, option=None, **kw)

Запитайте або змініть параметри для вказаного елементу.

Якщо параметри не задано, повертається dict із параметрами/значеннями для елемента. Якщо вказано параметр, повертається значення для цього параметра. В іншому випадку встановлює параметри на відповідні значення, задані kw.

move(item, parent, index)

Переміщує item на позицію index у списку дочірніх елементів батька.

Незаконно переміщувати елемент під одним із його нащадків. Якщо index менше або дорівнює нулю, item переміщується на початок; якщо більше або дорівнює кількості дітей, воно переміщується в кінець. Якщо елемент був від’єднаний, він знову приєднується.

reattach() is an alias of move().

next(item)

Повертає ідентифікатор наступного брата item або „“, якщо item є останнім дочірнім елементом свого батька.

parent(item)

Повертає ідентифікатор батьківського елемента item або „“, якщо item знаходиться на верхньому рівні ієрархії.

prev(item)

Повертає ідентифікатор попереднього брата item або „“, якщо item є першим дочірнім елементом свого батька.

see(item)

Переконайтеся, що елемент видно.

Встановлює параметр відкриття всіх предків item на True і прокручує віджет, якщо необхідно, щоб item знаходився у видимій частині дерева.

selection()

Повертає кортеж вибраних елементів.

Змінено в версії 3.8: selection() більше не приймає аргументи. Для зміни стану вибору використовуйте наступні методи вибору.

selection_set(*items)

предмети стають новим вибором.

Змінено в версії 3.6: items можна передавати як окремі аргументи, а не просто як один кортеж.

selection_add(*items)

Додайте предмети до вибору.

Змінено в версії 3.6: items можна передавати як окремі аргументи, а не просто як один кортеж.

selection_remove(*items)

Видалити предмети з вибору.

Змінено в версії 3.6: items можна передавати як окремі аргументи, а не просто як один кортеж.

selection_toggle(*items)

Перемикайте стан вибору кожного елемента в items.

Змінено в версії 3.6: items можна передавати як окремі аргументи, а не просто як один кортеж.

set(item, column=None, value=None)

З одним аргументом повертає словник пар стовпець/значення для вказаного елемента. З двома аргументами повертає поточне значення вказаного стовпця. З трьома аргументами встановлює значення заданого стовпця в заданому елементі на вказане значення.

tag_bind(tagname, sequence=None, callback=None)

Прив’яжіть зворотний виклик для даної послідовності події до тегу tagname. Коли подія доставляється до елемента, викликаються зворотні виклики для кожного параметра тегів елемента.

tag_configure(tagname, option=None, **kw)

Запитайте або змініть параметри для вказаного тегу.

Якщо kw не вказано, повертає dict налаштувань опції для tagname. Якщо вказано опцію, повертає значення цієї опції для вказаного тегу. В іншому випадку встановлює параметри на відповідні значення для даного тегу.

tag_has(tagname, item=None)

If item is specified, returns True if the specified item has the given tagname and False otherwise. Otherwise, returns a tuple of all items that have the specified tag.

Наявність: Tk 8.6

xview(*args)

Запитайте або змініть горизонтальне положення дерева.

yview(*args)

Запитайте або змініть вертикальне положення дерева.

Ttk styling

Each widget in ttk is assigned a style, which specifies the set of elements making up the widget and how they are arranged, along with dynamic and default settings for element options. By default the style name is the same as the widget’s class name, but it may be overridden by the widget’s style option. If you don’t know the class name of a widget, use the method Misc.winfo_class (somewidget.winfo_class()).

Дивись також

Tcl’2004 conference presentation

У цьому документі пояснюється, як працює тематичний механізм

class tkinter.ttk.Style

Цей клас використовується для роботи з базою даних стилів.

configure(style, query_opt=None, **kw)

Запитайте або встановіть значення за замовчуванням для вказаних параметрів у стилі.

Кожен ключ у kw є опцією, а кожне значення є рядком, що визначає значення цієї опції.

Наприклад, щоб змінити кожну кнопку за замовчуванням на плоску кнопку з відступом і іншим кольором фону:

from tkinter import ttk
import tkinter

root = tkinter.Tk()

ttk.Style().configure("TButton", padding=6, relief="flat",
   background="#ccc")

btn = ttk.Button(text="Sample")
btn.pack()

root.mainloop()
map(style, query_opt=None, **kw)

Запит або встановлення динамічних значень указаних параметрів у стилі.

Кожен ключ у kw є опцією, і кожне значення має бути списком або кортежем (зазвичай), що містить специфікації станів, згруповані в кортежі, списки або інші параметри. Специфікація стану — це сукупність одного чи кількох станів, а потім значення.

Приклад може зробити це більш зрозумілим:

import tkinter
from tkinter import ttk

root = tkinter.Tk()

style = ttk.Style()
style.map("C.TButton",
    foreground=[('pressed', 'red'), ('active', 'blue')],
    background=[('pressed', '!disabled', 'black'), ('active', 'white')]
    )

colored_btn = ttk.Button(text="Test", style="C.TButton").pack()

root.mainloop()

Зауважте, що порядок послідовностей (станів, значень) для опції має значення, якщо порядок змінено на [('активний', 'синій'), ('натиснутий', 'червоний')] у опція переднього плану, наприклад, результатом буде синій передній план, коли віджет буде активним або натиснутим.

When called to query the map (without specifying values to set), it returns a dictionary mapping each option to its list of statespecs.

Змінено в версії 3.10: The value returned when querying the map was corrected.

lookup(style, option, state=None, default=None)

Повертає значення, указане для option у style.

Якщо вказано state, очікується, що це буде послідовність з одного або кількох станів. Якщо встановлено аргумент за замовчуванням, він використовується як резервне значення, якщо не знайдено специфікації параметра.

Щоб перевірити, який шрифт кнопка використовує за замовчуванням:

from tkinter import ttk

print(ttk.Style().lookup("TButton", "font"))
layout(style, layoutspec=None)

Визначте макет віджета для даного стилю. Якщо layoutspec пропущено, повертається специфікація макета для заданого стилю.

layoutspec, якщо вказано, має бути списком або іншим типом послідовності (за винятком рядків), де кожен елемент має бути кортежем, а перший елемент — це ім’я макета, а другий — мати формат, описаний у розділі Layouts.

Щоб зрозуміти формат, перегляньте наведений нижче приклад (він не має на меті зробити щось корисне):

from tkinter import ttk
import tkinter

root = tkinter.Tk()

style = ttk.Style()
style.layout("TMenubutton", [
   ("Menubutton.background", None),
   ("Menubutton.button", {"children":
       [("Menubutton.focus", {"children":
           [("Menubutton.padding", {"children":
               [("Menubutton.label", {"side": "left", "expand": 1})]
           })]
       })]
   }),
])

mbtn = ttk.Menubutton(text='Text')
mbtn.pack()
root.mainloop()
element_create(elementname, etype, *args, **kw)

Create a new element in the current theme, of the given etype which is expected to be either «image», «from» or «vsapi». The latter is only available in Tk 8.6 on Windows.

Якщо використовується «image», args має містити назву зображення за замовчуванням, за якою слідують пари стану/значення (це специфікація зображення), а kw може мати такі параметри:

border=padding

padding — це список із чотирьох цілих чисел, які визначають ліву, верхню, праву та нижню межі відповідно.

висота=висота

Визначає мінімальну висоту елемента. Якщо значення менше нуля, за замовчуванням використовується висота базового зображення.

padding=заповнення

Визначає внутрішнє доповнення елемента. За умовчанням використовується значення рамки, якщо не вказано.

sticky=спец

Визначає, як зображення розміщується в кінцевій посилці. spec містить нуль або більше символів «n», «s», «w» або «e».

ширина=ширина

Визначає мінімальну ширину для елемента. Якщо значення менше нуля, за замовчуванням використовується ширина базового зображення.

Приклад:

img1 = tkinter.PhotoImage(master=root, file='button.png')
img1 = tkinter.PhotoImage(master=root, file='button-pressed.png')
img1 = tkinter.PhotoImage(master=root, file='button-active.png')
style = ttk.Style(root)
style.element_create('Button.button', 'image',
                     img1, ('pressed', img2), ('active', img3),
                     border=(2, 4), sticky='we')

Якщо «from» використовується як значення etype, element_create() клонує існуючий елемент. Очікується, що args міститиме ім’я теми, з якої буде клоновано елемент, і, за бажанням, елемент для клонування. Якщо цей елемент для клонування не вказано, буде використано порожній елемент. kw відкидається.

Приклад:

style = ttk.Style(root)
style.element_create('plain.background', 'from', 'default')

If «vsapi» is used as the value of etype, element_create() will create a new element in the current theme whose visual appearance is drawn using the Microsoft Visual Styles API which is responsible for the themed styles on Windows XP and Vista. args is expected to contain the Visual Styles class and part as given in the Microsoft documentation followed by an optional sequence of tuples of ttk states and the corresponding Visual Styles API state value. kw may have the following options:

padding=заповнення

Specify the element’s interior padding. padding is a list of up to four integers specifying the left, top, right and bottom padding quantities respectively. If fewer than four elements are specified, bottom defaults to top, right defaults to left, and top defaults to left. In other words, a list of three numbers specify the left, vertical, and right padding; a list of two numbers specify the horizontal and the vertical padding; a single number specifies the same padding all the way around the widget. This option may not be mixed with any other options.

margins=padding

Specifies the elements exterior padding. padding is a list of up to four integers specifying the left, top, right and bottom padding quantities respectively. This option may not be mixed with any other options.

ширина=ширина

Specifies the width for the element. If this option is set then the Visual Styles API will not be queried for the recommended size or the part. If this option is set then height should also be set. The width and height options cannot be mixed with the padding or margins options.

висота=висота

Specifies the height of the element. See the comments for width.

Приклад:

style = ttk.Style(root)
style.element_create('pin', 'vsapi', 'EXPLORERBAR', 3, [
                     ('pressed', '!selected', 3),
                     ('active', '!selected', 2),
                     ('pressed', 'selected', 6),
                     ('active', 'selected', 5),
                     ('selected', 4),
                     ('', 1)])
style.layout('Explorer.Pin',
             [('Explorer.Pin.pin', {'sticky': 'news'})])
pin = ttk.Checkbutton(style='Explorer.Pin')
pin.pack(expand=True, fill='both')

Змінено в версії 3.13: Added support of the «vsapi» element factory.

element_names()

Returns a tuple of elements defined in the current theme.

element_options(elementname)

Returns a tuple of elementname’s options.

theme_create(themename, parent=None, settings=None)

Створіть нову тему.

Це помилка, якщо themenaname вже існує. Якщо вказано parent, нова тема успадкує стилі, елементи та макети від батьківської теми. Якщо присутні параметри, очікується, що вони матимуть той самий синтаксис, який використовується для theme_settings().

theme_settings(themename, settings)

Тимчасово встановлює поточну тему на themenaname, застосовує вказані налаштування, а потім відновлює попередню тему.

Кожен ключ у settings є стилем, і кожне значення може містити ключі „configure“, „map“, „layout“ і „element create“, і очікується, що вони матимуть той самий формат, який визначено методами Style.configure(), Style.map(), Style.layout() і Style.element_create() відповідно.

Як приклад, давайте трохи змінимо Combobox для теми за замовчуванням:

from tkinter import ttk
import tkinter

root = tkinter.Tk()

style = ttk.Style()
style.theme_settings("default", {
   "TCombobox": {
       "configure": {"padding": 5},
       "map": {
           "background": [("active", "green2"),
                          ("!disabled", "green4")],
           "fieldbackground": [("!disabled", "green3")],
           "foreground": [("focus", "OliveDrab1"),
                          ("!disabled", "OliveDrab2")]
       }
   }
})

combo = ttk.Combobox().pack()

root.mainloop()
theme_names()

Returns a tuple of all known themes.

theme_use(themename=None)

Якщо themename не вказано, повертає тему, що використовується. В іншому випадку встановлює поточну тему на themenaname, оновлює всі віджети та видає подію <<ThemeChanged>>.

Макети

A layout can be just None, if it takes no options, or a dict of options specifying how to arrange the element. The layout mechanism uses a simplified version of the pack geometry manager: given an initial cavity, each element is allocated a parcel.

Допустимі параметри/значення:

side: whichside

Визначає, з якого боку порожнини розмістити елемент; зверху, справа, знизу або зліва. Якщо опущено, елемент займає всю порожнину.

sticky: nswe

Визначає місце розміщення елемента всередині його виділеної ділянки.

unit: 0 or 1

Якщо встановлено значення 1, елемент і всі його нащадки розглядатимуться як єдиний елемент для цілей Widget.identify() та ін. Він використовується для таких речей, як смуги прокрутки з ручками.

children: [sublayout… ]

Визначає список елементів для розміщення всередині елемента. Кожен елемент — це кортеж (або інший тип послідовності), де перший елемент — це назва макета, а інший — Layout.

Additional widgets

The following themed widgets complete the tkinter.ttk widget set. Each is the themed counterpart of the like-named classic tkinter widget and inherits the common methods of Widget.

class tkinter.ttk.Button(master=None, **kw)

Ttk Button widget, displays a textual label and/or image, and evaluates a command when pressed. It is the themed counterpart of tkinter.Button and inherits the common widget methods from Widget.

invoke()

Invoke the command associated with the button and return its result.

class tkinter.ttk.Checkbutton(master=None, **kw)

Ttk Checkbutton widget, used to control a boolean variable that is toggled on and off. It is the themed counterpart of tkinter.Checkbutton and inherits the common widget methods from Widget.

invoke()

Toggle the button between its selected and deselected states, invoke the command associated with the button, and return its result.

class tkinter.ttk.Entry(master=None, widget=None, **kw)

Ttk Entry widget, displays a one-line text string and allows the user to edit it. It is the themed counterpart of tkinter.Entry and inherits the common widget methods from Widget as well as the editing methods from tkinter.Entry.

bbox(index)

Return a tuple (x, y, width, height) giving the bounding box of the character at the given index.

This shadows the inherited Misc.bbox(); use grid_bbox() for the grid bounding box.

identify(x, y)

Return the name of the element under the point given by x and y, or the empty string if no element is present at that location.

validate()

Force validation of the entry and return True if validation succeeded, and False otherwise.

class tkinter.ttk.Frame(master=None, **kw)

Ttk Frame widget, a container used to group and lay out other widgets. It is the themed counterpart of tkinter.Frame and inherits the common widget methods from Widget.

class tkinter.ttk.Label(master=None, **kw)

Ttk Label widget, displays a textual label and/or image. It is the themed counterpart of tkinter.Label and inherits the common widget methods from Widget.

class tkinter.ttk.Labelframe(master=None, **kw)

Ttk Labelframe widget, a container that draws a border and a title label around its contents. It is the themed counterpart of tkinter.LabelFrame and inherits the common widget methods from Widget.

class tkinter.ttk.Menubutton(master=None, **kw)

Ttk Menubutton widget, displays a textual label and/or image, and pops up a menu when pressed. It is the themed counterpart of tkinter.Menubutton and inherits the common widget methods from Widget.

class tkinter.ttk.OptionMenu(master, variable, default=None, *values, **kwargs)

Ttk OptionMenu widget, a Menubutton that pops up a menu of mutually exclusive choices. variable is the variable that tracks the currently selected value, default is the value to set initially, and values are the entries to display in the menu. A command keyword argument may be given to specify a callable that is invoked with the selected value whenever the selection changes; the style keyword argument sets the style used by the underlying menubutton; and the name keyword argument sets the Tk widget name.

set_menu(default=None, *values)

Replace the entries of the menu with values. If default is given, also set it as the current value of the variable.

destroy()

Destroy this widget and its associated menu.

Змінено в версії 3.14: Added support for the name keyword argument.

class tkinter.ttk.Panedwindow(master=None, **kw)

Ttk Panedwindow widget, displays a number of subwindows stacked either vertically or horizontally. The user may adjust the relative sizes of the subwindows by dragging the sash between panes. It is the themed counterpart of tkinter.PanedWindow and inherits the common widget methods from Widget, as well as the add() and panes() methods from tkinter.PanedWindow.

insert(pos, child, **kw)

Insert a pane containing child at the position pos. pos is either the string 'end', an integer index, or the name of a managed subwindow. If child is already managed by the paned window, move it to the specified position. Any keyword arguments set pane options.

forget(child)

Remove child, which may be either an integer index or the name of a managed subwindow, from the panes.

This shadows the inherited geometry-manager forget(); use pack_forget(), grid_forget() or place_forget() to remove the widget itself from its manager.

pane(pane, option=None, **kw)

Query or modify the options of the specified pane, where pane is either an integer index or the name of a managed subwindow. If no arguments are given, return a dictionary of the pane option values. If option is specified, return the value of that option. Otherwise, set the options given as keyword arguments to their corresponding values.

sashpos(index, newpos=None)

If newpos is specified, set the position of sash number index and return its new position. This may adjust the positions of adjacent sashes to ensure that positions are monotonically increasing; positions are also constrained to be between 0 and the total size of the widget. If newpos is omitted, return the current position of the sash.

class tkinter.ttk.Radiobutton(master=None, **kw)

Ttk Radiobutton widget, used as part of a group to control a single shared variable by selecting one of several mutually exclusive values. It is the themed counterpart of tkinter.Radiobutton and inherits the common widget methods from Widget.

invoke()

Set the option variable to the button’s value, select the button, invoke the command associated with the button, and return its result.

class tkinter.ttk.Scale(master=None, **kw)

Ttk Scale widget, displays a slider that lets the user select a numeric value from a range by moving the slider along a trough. It is the themed counterpart of tkinter.Scale and inherits the common widget methods from Widget.

configure(cnf=None, **kw)

Modify or query the widget options, like Widget.configure. In addition, this method clips the from and to values so that the current value stays within the range defined by them.

Змінено в версії 3.9: Now returns the configuration value, like Widget.configure.

get(x=None, y=None)

Return the current value of the scale. If x and y are given, return the value corresponding to the pixel coordinate x, y instead.

class tkinter.ttk.Scrollbar(master=None, **kw)

Ttk Scrollbar widget, controls the viewport of an associated scrollable widget such as a Treeview, Entry or tkinter.Text. It is the themed counterpart of tkinter.Scrollbar and inherits the common widget methods from Widget, as well as the set() and get() methods from tkinter.Scrollbar.

class tkinter.ttk.Separator(master=None, **kw)

Ttk Separator widget, displays a horizontal or vertical separator line. It has no direct counterpart in tkinter and inherits the common widget methods from Widget.

class tkinter.ttk.Sizegrip(master=None, **kw)

Ttk Sizegrip widget, displays a grip that allows the user to resize the containing toplevel window by pressing and dragging the grip, typically placed in the bottom-right corner. It has no direct counterpart in tkinter and inherits the common widget methods from Widget.

class tkinter.ttk.LabeledScale(master=None, variable=None, from_=0, to=10, **kw)

A Frame containing a Scale and a Label that shows the scale’s current value. variable is the IntVar tracked by the scale (one is created if it is not given), and from_ and to define the range of the scale.

destroy()

Destroy this widget and remove the trace callback registered on the associated variable.

class tkinter.ttk.LabelFrame(master=None, **kw)

Alias of Labelframe, kept for naming compatibility with tkinter.LabelFrame.

class tkinter.ttk.PanedWindow(master=None, **kw)

Alias of Panedwindow, kept for naming compatibility with tkinter.PanedWindow.