tkinter.ttk — Стилезуемые виджеты Tk

Исходный код: Lib/tkinter/ttk.py


Модуль tkinter.ttk предоставляет доступ к множеству стилезуемых виджетов Tk, введенному в Tk 8.5. Если Python не был скомпилирован с Tk 8.5, этот модуль по-прежнему доступен, если Tile установлен. Первый метод, использующий Tk 8.5, предоставляет дополнительные преимущества, включая сглаживание шрифта при X11 и прозрачность окна (требуется менеджер окна композиции на X11).

Основная идея для tkinter.ttk состоит в том, чтобы отделить, насколько это возможно, код, реализующий поведение виджета, от кодаы, реализующего его внешний вид.

См.также

Поддержка стилизации Tk виджета
Документ, вводящий поддержку тем для Tk.

Использование Ttk

Чтобы начать использовать Ttk, импортируйте его модуль:

from tkinter import ttk

Чтобы переопределить основные виджеты Tk, импорт должен следовать за импортом Tk:

from tkinter import *
from tkinter.ttk import *

Это код заставляет несколько виджетов tkinter.ttk (Button, Checkbutton, Entry, Frame, Label, LabelFrame, Menubutton, PanedWindow, Radiobutton, Scale и Scrollbar) автоматически заменять виджеты Tk.

Это имеет прямое преимущество использования новых виджетов, которые обеспечивают лучший внешний вид и ощущение между платформами; однако виджеты замены не полностью совместимы. Главное отличие состоит в том, что в виджетах Ttk больше нет таких вариантов виджетов, как «fg», «bg» и других, связанных с стилем виджетов. Вместо этого используйте класс ttk.Style для улучшения эффектов стиля.

См.также

Преобразование существующих приложений для использования Tile виджетов
Монография (с использованием терминологии Tcl) о различиях, обычно встречающихся при перемещении приложений для использования новых виджетов.

Виджеты Ttk

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.

Widget

ttk.Widget определяет стандартные параметры и методы, поддерживаемые тематическими виджетами Tk, и не должен быть непосредственно создан экземпляр.

Стандартные опции

Все виджеты ttk принимают следующие опции:

Опция Описание
class Задает класс окна. Класс используется при запросе из БД опции для других опций окна, для определения привязок по умолчанию для окна и для выбора формата и стиля виджета по умолчанию. Этот параметр доступен только для чтения и может быть указан только при создании окна.
cursor Указывает курсор мыши, который будет используемый для виджета. Если задана пустая строка (по умолчанию), курсор наследуется для родительского виджета.
takefocus Определяет, принимает ли окно фокус во время обхода клавиатуры. Возвращается 0, 1 или пустая строка. Если возвращен 0, это означает, что окну следует полностью пропустить во время обхода клавиатуры. Если 1, это означает, что окно должно получать фокус ввода, пока оно доступно для просмотра. Пустая строка означает, что сценарии обхода принимают решение о том, стоит ли фокусироваться на окне.
style Может использоваться для указания собственного стиля виджета.

Опции прокручиваемого виджета

Следующие параметры поддерживаются виджетами, управляемыми полосой прокрутки.

Опция Описание
xscrollcommand

Используется для связи с горизонтальными полосами прокрутки.

При изменении вида в окне виджета виджет генерирует Tcl команду на основе команды прокрутки.

Обычно этот параметр состоит из Scrollbar.set() метода некоторой полосы прокрутки. Это приведет к обновлению полосы прокрутки при каждом изменении представления в окне.

yscrollcommand Используется для связи с вертикальными полосами прокрутки. Для получения дополнительной информации см. выше.

Опции Label

Следующие параметры поддерживаются метками, кнопками и другими кнопочными виджетами.

Опция Описание
text Указывает текстовую строку, отображаемую внутри виджета.
textvariable Указывает имя, значение которого будет использоваться вместо ресурса текстовой опции.
underline Если задано, указывает индекс (на основе 0) символ для подчеркивания в текстовой строке. Для включения мнемокадра используется символ подчеркивания.
image Задает изображение для отображения. Это список из 1 или более элементов. Первый элемент является именем изображения по умолчанию. Остальная часть списка, если последовательность пар statespec/значение определяется Style.map(), указывая различные изображения для использования, когда виджет находится в определенном состояние или комбинации состояний. Все изображения в списке должны иметь одинаковый размер.
compound

Определяет способ отображения изображения относительно текста, если присутствуют параметры текста и изображений. Допустимыми значения являются:

  • text: отображать только текст
  • image: отображать только изображение
  • top, bottom, left, right: отображать изображение вверху, внизу,слева или справа от текста соответственно.
  • none: по умолчанию. отображать изображение, если оно имеется, в противном случае текст.
width Если значение больше нуля, указывает, сколько места в символьной ширине следует выделить для текстовой метки, если меньше нуля, определяет минимальную ширину. Если значение равно нулю или не указано, используемый естественная ширина текстовой метки.

Опции совместимости

Опция Описание
state Для управления битом состояние «disabled» может быть установлено значение «normal» или «disabled». Это параметр только для записи: настройка изменяет состояние виджета, но метод Widget.state() не влияет на эту опцию.

Виджет state

Виджет state представляет собой растровое изображение независимых флагов состояние.

Флаг Описание
active Курсор мыши находится над виджетом, и нажатие кнопки мыши вызовет некоторые действия
disabled Виджет отключен от программного управления
focus Виджет захватил фокус клавиатуры
pressed Выполняется нажатие виджета
selected «On», «true» или «current» для таких вещей, как Checkbuttons и radiobuttons
background Windows и Mac имеют понятие «активного» или переднего окна. background состояние устанавливается для виджетов в фоновом окне и сбрасывается для виджетов в окне переднего плана
readonly Виджет не должен разрешать изменение пользователем
alternate Специфичный для виджета альтернативный формат отображения
invalid Недопустимое значение виджета

Спецификация состояние представляет собой последовательность имен состояние, необязательно с префиксом с восклицательным знаком, указывающим, что бит выключен.

ttk.Widget

Помимо способов, описанных ниже, ttk.Widget поддерживает способы tkinter.Widget.cget() и tkinter.Widget.configure().

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

Возвращает имя элемента в позиции x y или пустое строка, если точка не лежит внутри какого-либо элемента.

x и y являются координатами пикселей относительно графического элемента.

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

Проверьте состояние виджета. Если колбэк не указан, возвращает True, если виджет состояние соответствует statespec и False в противном случае. Если указан колбэк, то он вызывается с аргументами args, если виджет состояние соответствует statespec.

state(statespec=None)

Изменение или запрос состояние виджета. Если statespec указан, устанавливает состояние виджета в соответствии с ним и возвращает новый statespec, указывающий, какие флаги были изменены. Если statespec не указан, возвращает текущие флаги состояние.

statespec обычно будет список или кортеж.

Combobox

Виджет ttk.Combobox объединяет текстовое поле с раскрывающимся списком значения. Этот виджет является подкласс Entry.

Помимо методов, унаследованных от Widget: Widget.cget(), Widget.configure(), Widget.identify(), Widget.instate() и Widget.state(), и следующих унаследованных от Entry: Entry.bbox(), Entry.delete(), Entry.icursor(), Entry.index(), Entry.insert(), Entry.selection(), Entry.xview(), имеет некоторые другие методы, описанные в ttk.Combobox.

Options

Этот виджет принимает следующие параметры:

Опция Описание
exportselection Булево значение. Если параметр установлен, выбор виджета связан с выбором «Диспетчера окон» (который возвращается, например, путем вызова Misc.selection_get).
justify Указывает способ выравнивания текста в пределах графического элемента. Одино из «left», «center» или «right».
height Указывает высоту раскрывающегося списка в строках.
postcommand Сценарий (возможно, зарегистрированный в Misc.register), вызываемый непосредственно перед отображением значения. Он может указывать отображаемые значения.
state Одино из «normal», «readonly» или «disabled». В состояние «readonlyя» значение не может редактироваться напрямую, и пользователь может выбрать значения только из раскрывающегося списка. В состояние «normal» текстовое поле является непосредственно редактируемым. В состояние «disabled» взаимодействие невозможно.
textvariable Задает имя, значение которого связана с значением виджета. При каждом изменении значения, связанного с этим именем, значение виджета обновляется, и наоборот. См. tkinter.StringVar.
values Указывает список значений, отображаемых в выпадающем списке.
width Задает целое значение, указывающее требуемую ширину окна ввода, в символах среднего размера шрифта виджета.

Виртуальные события

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

ttk.Combobox

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

Если newindex указано, устанавливает значение combobox в положение элемента newindex. В противном случае возвращает индекс текущего значение или -1, если текущий значение отсутствует в списке значения.

get()

Возвращает текущее значение combobox.

set(value)

Устанавливает для значение выпадающего списка значение value.

Spinbox

Виджет ttk.Spinbox представляет собой ttk.Entry со стрелками приращения и уменьшения. Его можно используемый для номеров или списков строка значения. Этот виджет является подкласс Entry.

Помимо методов, унаследованных от Widget: Widget.cget(), Widget.configure(), Widget.identify(), Widget.instate() и Widget.state(), и следующих унаследованных от Entry: Entry.bbox(), Entry.delete(), Entry.icursor(), Entry.index(), Entry.insert(), Entry.xview(), имеет некоторые другие методы, описанные в ttk.Spinbox.

Опции

Этот виджет принимает следующие параметры:

Опция Описание
from Float значение. Если установлено, это минимальное значение, до которого будет уменьшаться кнопка уменьшения. Должен быть написан как from_ при использовании в качестве аргумента, так как from является ключевым словом Python.
to Float значение. Если установлено, это максимальное значение, до которого будет увеличиваться кнопка приращения.
increment Float значение. Определяет величину изменения значение с помощью кнопок приращения/уменьшения. По умолчанию - 1.0.
values Строковая последовательность или значение float. Если указано, кнопки приращения/уменьшения будут циклически перемещаться по элементам в этой последовательности вместо приращения или уменьшения чисел.
wrap Булево значение. При True кнопки приращения и уменьшения будут циклически переходить от to к значению from, значение или from значение к to значению соответственно.
format Строковое значение. Здесь указывается формат чисел, задаваемый кнопками приращения/уменьшения. Он должен иметь вид «%W.Pf», где W - заполненная ширина значения, P - точность, а „%“ и „f“ - литерал.
command Вызываемый Python. Будет вызываться без аргументов при каждом нажатии кнопки приращения или уменьшения.

Виртуальные события

Виджет spinbox создает виртуальное событие <<Increment>>, когда пользователь нажимает кнопку <Up>, и виртуальное событие <<Decrement>>, когда пользователь нажимает кнопку <Down>.

ttk.Spinbox

class tkinter.ttk.Spinbox
get()

Возвращает текущее значение спинбокса.

set(value)

Устанавливает значение спинбокса на value.

Notebook

Виджет Ttk Notebook управляет коллекцией окон и отображает по одному. Каждое дочернее окно связано с вкладкой, которую пользователь может выбрать для изменения отображаемого в данный момент окна.

Options

Этот виджет принимает следующие параметры:

Опция Описание
height Если значение больше нуля, указывает требуемую высоту области панели (не включая внутреннее заполнение или вкладки). В противном случае максимальная высота всех панелей будет используемый.
padding Указывает объем дополнительного пространства, добавляемого с внешней стороны notebook. Заполнение представляет собой список до четырех спецификаций длины слева верх справа вниз. Если указано менее четырех элементов, то нижний элемент по умолчанию - сверху, правый элемент по умолчанию - слева, а верхний элемент по умолчанию - слева.
width Если передана и больше нуля, задаёт требуемую ширину области панели (не включая внутреннее заполнение). В противном случае будет использоваться максимальная ширина всех панелей.

Опции Tab

Существуют также специальные опции для вкладок:

Опция Описание
state Либо «normal», «disabled» или «hidden». Если значение «disabled» (отключено), вкладка не может быть выбрана. Если «hidden», вкладка не отображается.
sticky Определяет расположение дочернего окна в области панели. Значение является строкой, содержащим ноль или более символов «n», «s», «e» или «w». Каждая буква относится к стороне (север, юг, восток или запад), к которой будет прилипать дочернее окно, согласно менеджеру геометрии grid().
padding Указывает объем дополнительного пространства, добавляемого между записной книжкой и этой панелью. Синтаксис аналогичен параметру, используемый этим виджетом.
text Задает текст для отображения на вкладке.
image Задает изображение для отображения на вкладке. См. опцию image, описанную в Widget.
compound Указывает, как отображать изображение относительно текста, если присутствуют и текст, и изображение. См. Опции Label для получения допустмых значений.
underline Указывает индекс (на основе 0) символ для подчеркивания в текстовой строке. Символ подчеркивания используется для мнемонического включения при вызове Notebook.enable_traversal().

Идентификаторы Tab

tab_id, присутствующие в нескольких способах ttk.Notebook, могут иметь любую из следующих форм

  • Целое число от нуля до числа вкладок имя дочернего окна позиционная спецификация формы «@ x, y», которая идентифицирует вкладку литерал строка «текущий», которая идентифицирует выбранную вкладку литерал строка «конец», которая возвращает количество вкладок (допустимо только для Notebook.index())

Виртуальные события

Этот виджет создает виртуальное событие <<NotebookTabChanged>> после выбора новой вкладки.

ttk.Notebook

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

Добавление новой вкладки в блокнот.

Если окно в настоящее время управляется записной книжкой, но скрыто, оно восстанавливается в прежнее положение.

Список доступных опций см. в разделе Опции Tab.

forget(tab_id)

Удаляет вкладку, заданную tab_id, отменяет сопоставление и отменяет управление связанным окном.

hide(tab_id)

Скрытие вкладки, указанной в tab_id.

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

identify(x, y)

Возвращает имя элемента табуляции в позиции x, y или пустой строка, если она отсутствует.

index(tab_id)

Возвращает числовой индекс вкладки, указанный параметром tab_id, или общее число вкладок, если tab_id является строка «конец».

insert(pos, child, **kw)

Вставка панели в указанное положение.

pos - это либо строка «end», либо целочисленный индекс, либо имя управляемого нижестоящего элемента. Если child уже управляется записной книжкой, перемещает ее в указанное положение.

Список доступных опций см. в разделе Опции Tab.

select(tab_id=None)

Выбор указанного tab_id.

Будет отображено связанное дочернее окно, и ранее выбранное окно (если оно отличается) не будет сопоставлено. Если tab_id пропущено, возвращает имя графического элемента выбранной панели.

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

Выполните запрос или измените параметры определенного tab_id.

Если kw не задан, возвращает словарь параметра tab значения. Если указан option, возвращает значение этого option. В противном случае устанавливает соответствующие значения.

tabs()

Возвращает список окон, управляемых записной книжкой.

enable_traversal()

Включить обход клавиатуры для окна верхнего уровня, содержащего эту записную книжку.

Это расширит привязки для окна верхнего уровня, содержащего блокнот, следующим образом:

  • Control-Tab: выбор вкладки, следующей за выбранной в данный момент.
  • Shift-Control-Tab: выбор вкладки, предшествующей выбранной в данный момент.
  • Alt-K: где K - мнемонический (подчеркнутый) символ любой вкладки, выберет эту вкладку.

Несколько записных книжек на одном верхнем уровне могут быть включены для обхода, включая вложенные записные книжки. Однако обход записной книжки работает правильно только в том случае, если все панели имеют записную книжку, в которой они находятся как главные.

Progressbar

Виджет ttk.Progressbar показывает состояние длительной операции. Он может работать в двух режимах: 1) определяемый режим, который показывает количество выполненных работ относительно общего объема работ, которые должны быть выполнены, и 2) неопределенный режим, который обеспечивает анимированный дисплей, чтобы дать пользователю знать, что работа продвигается.

Опции

Этот виджет принимает следующие параметры:

Опция Описание
orient Один из «horizontal» или «vertical». Указывает ориентацию индикатора выполнения.
length Указывает длину длинной оси индикатора выполнения (ширина по горизонтали, высота по вертикали).
mode Один из «determinate» или «indeterminate».
maximum Число, указывающее максимальное значение. По умолчанию - 100.
value Текущий значение индикатора выполнения. В «determinate» режиме это представляет объем выполненной работы. В «indeterminate» режиме он интерпретируется как maximum по модулю; то есть индикатор выполнения завершает один «цикл», когда его значение увеличивается на maximum.
variable Имя, связанное с значением опции. Если указано, значение индикатора выполнения автоматически устанавливается в значение этого имени при каждом изменении последнего.
phase Опция только для чтения. Виджет периодически увеличивает значение этого параметра, когда его значение больше 0 и в определённом режиме меньше максимума. Эта опция может быть используема текущей темой для обеспечения дополнительных анимационных эффектов.

ttk. Progressbar

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

Начать режим автоматического создания: планирование повторяющегося события таймера, которое вызывает Progressbar.step() каждые interval миллисекунд. Если этот параметр опущен, значение по умолчанию interval равно 50 миллисекундам.

step(amount=None)

Увеличивает значение индикатора выполнения на amount.

amount значение по умолчанию равно 1,0, если оно опущено.

stop()

Stop autoincrement mode: отменяет любое повторяющееся событие таймера, инициированное Progressbar.start() для этого индикатора выполнения.

Сепаратор

Графический элемент ttk.Separator отображает горизонтальную или вертикальную разделительную панель.

У него нет других методов, кроме унаследованных от ttk.Widget.

Опции

Этот виджет принимает следующий параметр:

Опция Описание
orient Один из «horizontal» или «vertical». Указывает ориентацию разделителя.

Sizegrip

Графический элемент «ttk.Sizegrip» (также известный как окно расширения) позволяет пользователю изменять размер окна верхнего уровня путем нажатия и перетаскивания ручки.

Этот виджет не имеет ни конкретных опций, ни конкретных методов, кроме унаследованных от ttk.Widget.

Определенные для платформы примечания

  • В MacOS X окна верхнего уровня автоматически включают встроенную ручку размера по умолчанию. Добавление Sizegrip безвредно, так как встроенная ручка просто маскирует виджет.

Ошибки

  • Если положение верхнего уровня было указано относительно правой или нижней части экрана (например,….), виджет Sizegrip не будет изменять размер окна.
  • Этот виджет поддерживает только «юго-восточное» изменение размеров.

Treeview

Виджет ttk.Treeview отображает иерархическую коллекцию элементов. Каждый элемент имеет текстовую метку, необязательное изображение и необязательный список значения данных. После метки дерева значения данных отображаются в следующих друг за другом столбцах.

Порядок отображения значения данных можно контролировать путем установки параметра виджета displaycolumns. Графический элемент дерева может также отображать заголовки столбцов. Доступ к столбцам возможен по числовым или символьным именам, перечисленным в столбцах параметров виджета. См. Идентификаторы колонки.

Каждый элемент идентифицируется по уникальному имени. Виджет генерирует идентификаторы элементов, если они не предоставлены вызывающей стороной. Существует различающийся корневой элемент с именем {}. Сам корневой элемент не отображается; его нижестоящие элементы отображаются на верхнем уровне иерархии.

Каждый элемент также имеет список тегов, которые можно используемый для связывания привязок событий с отдельными элементами и управления внешним видом элемента.

Графический элемент Treeview поддерживает горизонтальную и вертикальную прокрутку в соответствии с параметрами, описанными в разделе Опции прокручиваемого виджета, а также методами Treeview.xview() и Treeview.yview().

Опции

Этот виджет принимает следующие параметры:

Опция Описание
columns Список идентификаторов столбцов, указывающий количество столбцов и их имена.
displaycolumns Список идентификаторов столбцов (символьные или целочисленные индексы), указывающий, какие столбцы данных отображаются и в каком порядке они отображаются, или строка «#all».
height Указывает количество строк, которые должны быть видны. Примечание: требуемая ширина определяется из суммы значений ширины столбца.
padding Определяет внутреннее заполнение для графического элемента. Заполнение представляет собой список до четырех спецификаций длины.
selectmode

Управляет тем, как встроенные привязки классов управляют выделением. Одно из значений: «extended», «browse» или «none». Если установлено значение «extended» (по умолчанию), можно выбрать несколько элементов. При выборе «browse» одновременно будет выбран только один элемент. Если «none», выбор не будет изменен.

Обратите внимание, что код приложения и привязки тегов могут задавать выбор независимо от значение этого параметра.

show

Список, содержащий ноль или несколько следующих значения, указывающих, какие элементы дерева должны отображаться.

  • tree: отображать метки дерева в столбце #0.
  • headings: отобразить строку заголовка.

По умолчанию используется «tree headings», т.е. отображаются все элементы.

Примечание: Столбец #0 всегда относится к столбцу дерева, даже если не указано show=»tree».

Опции элемента

Следующие параметры элемента могут быть заданы для элементов в командах вставки и графического элемента элемента.

Опция Описание
text Текстовая метка, отображаемая для элемента.
image Tk изображение, отображаемое слева от метки.
values

Список значений, связанных с элементом.

Каждый элемент должен иметь то же количество значения, что и столбцы параметров виджета. Если значения меньше, чем столбцов, остальные значения считаются пустыми. Если значения больше, чем столбцов, дополнительные значения игнорируются.

open True/False значение, указывающий, должны ли отображаться или скрываться дочерние элементы элемента.
tags Список тегов, связанных с этим элементом.

Опции тэга

Для тегов можно указать следующие параметры:

Опция Описание
foreground Задает цвет переднего плана текста.
background Задает цвет фона ячейки или элемента.
font Указывает шрифт, используемый при рисовании текста.
image Задает изображение элемента, если параметр изображения элемента пуст.

Идентификаторы колонки

Идентификаторы столбцов принимают любую из следующих форм:

  • Символическое имя из списка столбцов.
  • Целое число n, указывающее n-й столбец данных.
  • Строка формы #n, где n - целое число, указывающее n-й отображаемый столбец.

Примечания:

  • значения опций элемента могут отображаться в порядке, отличном от того, в котором они хранятся.
  • Столбец #0 всегда ссылается на столбец дерева, даже если не указано show=»tree».

Номер столбца данных - это индекс в списке значения опций элемента; отображаемый номер столбца - это номер столбца в дереве, где отображаются значения. Метки дерева отображаются в столбце # 0. Если параметр displaycolumns не установлен, столбец данных n отображается в столбце #n+1. Опять же, столбец #0 всегда ссылается на столбец дерева.

Виртуальные события

Виджет Treeview генерирует следующие виртуальные события.

Событие Описание
<<TreeviewSelect>> Генерируется при каждом изменении выбора.
<<TreeviewOpen>> Создано непосредственно перед настройкой элемента фокуса для open=True.
<<TreeviewClose>> Создано сразу после установки для элемента фокуса значения open=False.

Методы Treeview.focus() и Treeview.selection() можно используемый для определения соответствующего элемента или элементов.

ttk. Treeview

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

Возвращает ограничивающую рамку (относительно окна графического элемента treeview) указанного item в форме (x, y, width, height).

Если указан column, возвращает ограничительную рамку этой ячейки. Если item не виден (т.е. если он является потомком закрытого элемента или прокручен вне экрана), возвращает пустой строка.

get_children(item=None)

Возвращает список детей, принадлежащих item.

Если item не указан, возвращает корневые потомки.

set_children(item, *newchildren)

Заменяет ребенка item newchildren.

Дети, присутствующие в item, которые отсутствуют в newchildren, отделяются от дерева. Ни один элемент в newchildren не может быть родоначальником item. Следует отметить, что отсутствие указания newchildren приводит к отсоединению нижестоящих элементов item.

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

Запрос или изменение параметров для указанного column.

Если kw не задан, возвращает словарь параметра столбца значения. Если указан option, то значение для этого option будет возвращенный. В противном случае устанавливает соответствующие значения.

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

  • id
    возвращает имя столбца. Этот параметр доступен только для чтения.
  • якорь: один из стандартных якорных значения Tk.
    Указывает способ выравнивания текста в этом столбце относительно ячейки.
  • minwidth: width
    минимальная ширина столбца в пикселях. Если размер виджета изменен или пользователь перетаскивает столбец, то размер столбца не будет меньше указанного в этом параметре.
  • stretch: True/False
    указывает, следует ли корректировать ширину столбца при изменении размера графического элемента.
  • width: width
    Ширина столбца в пикселях.

Чтобы настроить столбец дерева, вызовите его со column = «#0»

delete(*items)

Удалить все указанные items и все их потомки.

Корневой элемент не может быть удален.

detach(*items)

Отсоединяет все указанные items от дерева.

Элементы и все их потомки все еще присутствуют и могут быть повторно вставлены в другую точку дерева, но не будут отображаться.

Корневой элемент не может быть отсоединен.

exists(item)

Возвращает True, если указанный item присутствует в дереве.

focus(item=None)

Если item указан, задает для элемента фокуса значение item. В противном случае возвращает текущий элемент фокуса или «если его нет.

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

Запрос или изменение параметров заголовка для указанного column.

Если kw не задан, возвращает словарь опции заголовка значения. Если указан option, то значение для этого option будет возвращенный. В противном случае устанавливает соответствующие значения.

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

  • text: text
    текст, отображаемый в заголовке столбца.
  • image: imageName
    задает изображение, отображаемое справа от заголовка столбца.
  • anchor: anchor
    указывает способ выравнивания текста заголовка. Один из стандартных якорных значения Tk.
  • command: callback
    Колбэк, вызываемый при нажатии метки заголовка.

Чтобы настроить заголовок столбца дерева, вызовите его с помощью column = «#0».

identify(component, x, y)

Возвращает описание указанного component под точкой, заданной x и y, или пустой строка, если такой component не присутствует в этой позиции.

identify_row(y)

Возвращает идентификатор элемента в позиции y.

identify_column(x)

Возвращает идентификатор столбца данных ячейки в позиции x.

Столбец дерева имеет идентификатор # 0.

identify_region(x, y)

Возвращает один из:

регион значение
heading Область заголовка дерева.
separator Пробел между заголовками двух столбцов.
tree Область дерева.
cell Ячейка данных.

Доступность: Tk 8.6.

identify_element(x, y)

Возвращает элемент в положении x, y.

Доступность: Tk 8.6.

index(item)

Возвращает целочисленный индекс item в списке нижестоящих элементов родительского элемента.

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

Создает новый элемент и возвращает идентификатор вновь созданного элемента.

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

Список доступных точек см. в разделе Опции элемента.

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

Запрос или изменение параметров для указанного item.

Если опции не заданы, возвращенный словарь с options/значения для элемента. Если указан option, то значение для этого параметра будет возвращенный. В противном случае устанавливает соответствующие значения в соответствии с kw.

move(item, parent, index)

Перемещает item в положение index в списке нижестоящих элементов parent.

Перемещение элемента по одному из его потомков запрещено. Если index меньше или равно нулю, item перемещается в начало; если оно больше или равно числу нижестоящих элементов, оно перемещается в конец. Если item был отсоединен, он будет присоединен повторно.

next(item)

Возвращает идентификатор следующего родителя item или «if item является последним нижестоящим элементом родителя.

parent(item)

Возвращает идентификатор родителя item или «if item находится на верхнем уровне иерархии.

prev(item)

Возвращает идентификатор предыдущего родителя item или «if item является первым нижестоящим элементом родителя.

reattach(item, parent, index)

Это алиас для Treeview.move().

see(item)

Убедитесь, что item видна.

Устанавливает для всех предков item значение «<unk>» и при необходимости прокручивает виджет таким образом, чтобы item находился в пределах видимой части дерева.

selection()

Возвращает кортеж выбранных элементов.

Изменено в версии 3.8: selection() больше не принимает аргументы. Для изменения состояние выбора используйте следующие методы.

selection_set(*items)

items становится новой выборкой.

Изменено в версии 3.6: items можно передать как отдельные аргументы, а не просто как единый кортеж.

selection_add(*items)

Добавьте items к выделенной области.

Изменено в версии 3.6: items можно передать как отдельные аргументы, а не просто как единый кортеж.

selection_remove(*items)

Удалите items из выделенной области.

Изменено в версии 3.6: items можно передать как отдельные аргументы, а не просто как единый кортеж.

selection_toggle(*items)

Переключите состояние выбора каждого элемента в items.

Изменено в версии 3.6: items можно передать как отдельные аргументы, а не просто как единый кортеж.

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

С помощью одного аргумента возвращает словарь пар column/значение для указанного item. С помощью двух аргументов возвращает текущий значение указанного column. С тремя аргументами устанавливает значение заданного column в заданном item на указанный value.

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

Привязать колбэк для данного события sequence к тегу tagname. При доставке события элементу вызываются колбэки для каждого параметра тегов элемента.

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

Запрос или изменение параметров для указанного tagname.

Если kw не задан, возвращает словарь параметров настройки для tagname. Если option указан, возвращает значение для этого option для указанного tagname. В противном случае устанавливает соответствующие значения для данного tagname.

tag_has(tagname, item=None)

Если item указан, возвращает 1 или 0 в зависимости от того, имеет ли указанный item заданный tagname. В противном случае возвращает список всех элементов с указанным тегом.

Доступность: Tk 8.6

xview(*args)

Запрос или изменение положения дерева по горизонтали.

yview(*args)

Запрос или изменение положения дерева по вертикали.

Стилизация Ttk

Каждому виджету в ttk назначается стиль, который определяет набор элементов, составляющих виджет, и способ их расположения, а также динамические и стандартные параметры параметров элемента. По умолчанию имя стиля совпадает с именем класса виджета, но может быть переопределено параметром стиля виджета. Если имя класса виджета неизвестно, используйте метод Misc.winfo_class() (somewidget.winfo_class ()).

См.также

Презентация конференции Tcl’2004
В этом документе объясняется, как работает механизм темы.
class tkinter.ttk.Style

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

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

Выполните запрос или задайте значение по умолчанию для указанных параметров в style.

Каждый ключ в 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)

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

Каждый ключ в kw является опцией, и каждый значение должен быть списком или кортежем (обычно), содержащим государственные объекты, сгруппированные в кортежи, списки или некоторые другие предпочтения. Statespec - это соединение одного или нескольких состояний, а затем значение.

Пример может сделать его более понятным:

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()

Обратите внимание, что порядок последовательностей (состояний, значение) для опции имеет значение, если порядок изменяется на [('active', 'blue'), ('pressed', 'red')] в опции переднего плана, например, результатом будет синий передний план, когда виджет находился в активном или нажатом состоянии.

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

Возвращает значение, указанный для option в style.

Если state указан, то предполагается, что это последовательность из одного или нескольких состояний. Если задан аргумент default, он используемый как резервный значение в случае, если спецификация для параметра не найдена.

Проверка шрифта, используемого кнопкой по умолчанию:

from tkinter import ttk

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

Определите макет графического элемента для данного style. Если layoutspec опущен, возвращает спецификацию компоновки для данного стиля.

layoutspec, если он указан, должен быть списком или каким-либо другим типом последовательности (за исключением строки), где каждый элемент должен быть кортежем, а первый элемент является именем макета, а второй элемент должен иметь формат, описанный в Компоновка.

Чтобы понять формат, см. следующий пример (он не предназначен для каких-либо полезных действий):

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)

Создайте новый элемент в текущей теме данного etype, который должен быть «image», «from» или «vsapi». Последний доступен только в Tk 8.6a для Windows XP и Vista и не описан здесь.

Если используемый «image», args должен содержать имя изображения по умолчанию, за которым следуют statespec/значение пары (это imagespec), и kw могут иметь следующие опции:

  • border=padding
    является списком до четырех целых чисел, указывая левую, верхнюю, правую и нижнюю границы соответственно.
  • height=height
    указывает минимальную высоту элемента. Если значение меньше нуля, высота базового изображения используемый по умолчанию.
  • padding=padding
    указывает внутреннее заполнение элемента. По умолчанию используется значение границы, если она не указана.
  • sticky=spec
    Указывает способ размещения изображения в конечном участке. spec содержит ноль или более символов «n», «s», «w» или «e».
  • width=width
    Указывает минимальную ширину элемента. Если значение меньше нуля, ширина базового изображения используемый по умолчанию.

Если в качестве значение etype используемый «from», element_create() клонирует существующий элемент. Ожидается, что args будет содержать имя темы, из которого будет клонирован элемент, и необязательно элемент для клонирования. Если этот элемент для клонирования не указан, будет используемый пустой элемент. kw отбрасывается.

element_names()

Возвращает список элементов, определенных в текущей теме.

element_options(elementname)

Возвращает список опций elementname.

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

Создание новой темы.

Это ошибка, если themename уже существует. Если parent указан, новая тема наследует стили, элементы и макеты от родительской темы. Если settings присутствуют, они должны иметь одинаковые синтаксические используемый для theme_settings().

theme_settings(themename, settings)

Временно устанавливает текущую тему на themename, применяет указанные settings, а затем восстанавливает предыдущую тему.

Каждый ключ в 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()

Возвращает список всех известных тем.

theme_use(themename=None)

Если themename не задан, возвращает используемую тему. В противном случае задает текущей теме значение themename, обновляет все виджеты и создает событие <<ThemeChanged>>.

Компоновка

Компоновка может быть просто None, если для нее не требуется никаких параметров, или словарь параметров, определяющих порядок расположения элемента. Механизм компоновки использует упрощенную версию диспетчера геометрии пакета: при наличии начальной полости каждому элементу назначается участок. Допустимые options/значения:

  • сторона: whichside
    указывает сторону полости для размещения элемента; один из верхнего, правого, нижнего или левого. Если этот параметр опущен, элемент занимает всю полость.
  • sticky: nswe
    указывает место размещения элемента внутри выделенного участка.
  • unit: 0 или 1
    Если установлено значение 1, элемент и все его потомки рассматриваются как единый элемент для целей Widget.identify() и другие. Это используемый для таких вещей, как ползунки с ручками.
  • дети: [sublayout…]
    Задает список элементов для размещения внутри элемента. Каждый элемент является кортежем (или другим типом последовательности), где первый элемент является именем макета, а другой - Компоновка.