tkinter.ttk — Виджеты Tk с темой
Исходный код: Lib/tkinter/ttk.py
Модуль tkinter.ttk предоставляет доступ к набору виджетов Tk с темой, представленному в 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.
Это непосредственно улучшает внешний вид и ощущения от использования новых виджетов на различных платформах; однако, заменяющие виджеты не полностью совместимы. Основное различие заключается в том, что такие параметры виджетов, как «fg», «bg» и другие, связанные со стилизацией виджетов, больше не присутствуют в виджетах Ttk. Вместо этого используйте класс 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.
Виджет
ttk.Widget определяет стандартные параметры и методы, поддерживаемые темами Tk, и не должен непосредственно инстанцироваться.
Стандартные параметры
Все виджеты ttk поддерживают следующие параметры:
Параметр | Описание |
|---|---|
class | Указывает класс окна. Класс используется при запросе базы данных параметров окна для других параметров окна, для определения значений bindtags по умолчанию для окна и для выбора стандартной компоновки и стиля виджета. Этот параметр является только для чтения и может быть указан только при создании окна. |
cursor | Указывает используемый курсор мыши для виджета. Если установлено пустой строкой (по умолчанию), курсор наследуется от родительского виджета. |
takefocus | Определяет, принимает ли окно фокус при переходе по клавиатуре. Возвращает 0, 1 или пустую строку. Если возвращено 0, это означает, что окно должно быть пропущено при переходе по клавиатуре. Если 1, это означает, что окно должно получить фокус ввода, пока оно отображается. Пустая строка означает, что скрипты перехода принимают решение о том, фокусироваться ли на окне или нет. |
style | Может быть использован для указания пользовательского стиля виджета. |
Параметры прокручиваемых виджетов
Следующие параметры поддерживаются виджетами, управляемыми полосой прокрутки.
Параметр | Описание |
|---|---|
xscrollcommand |
Используется для взаимодействия с горизонтальными полосами прокрутки. Когда область видимости в окне виджета меняется, виджет генерирует Tcl команду, основанную на scrollcommand. Обычно этот параметр состоит из метода |
yscrollcommand | Используется для взаимодействия с вертикальными полосами прокрутки. Дополнительная информация выше. |
Параметры метки
Следующие параметры поддерживаются метками, кнопками и другими кнопочными виджетами.
Параметр | Описание |
|---|---|
text | Указывает строку текста, которая будет отображаться внутри виджета. |
textvariable | Указывает имя, значение которого будет использоваться вместо параметра текстовой опции. |
underline | Если установлено, указывает индекс (с нуля) символа, который нужно подчеркнуть в строке текста. Подчеркнутый символ используется для активации мнемоники. |
image | Указывает изображение для отображения. Это список из 1 или более элементов. Первый элемент — имя изображения по умолчанию. Остальные элементы — последовательность пар состояние/значение, как определено в |
compound |
Указывает, как отображать изображение относительно текста, если присутствуют оба параметра «текст» и «изображение». Допустимые значения:
|
width | Если больше нуля, указывает, сколько места в ширине символа нужно выделить для метки текста; если меньше нуля, задаёт минимальную ширину. Если ноль или не указано, используется естественная ширина метки текста. |
Параметры совместимости
Параметр | Описание |
|---|---|
state | Может быть установлен в «нормальный» или «отключенный», чтобы управлять флагом «отключено». Это параметр только для записи: его установка изменяет состояние виджета, но метод |
Состояния виджета
Состояние виджета — это битовая карта независимых флагов состояния.
Флаг | Описание |
|---|---|
active | Курсор мыши находится над виджетом, и нажатие кнопки мыши вызовет какое-либо действие. |
disabled | Виджет отключен по управлению программой. |
focus | Виджет имеет фокус клавиатуры. |
pressed | Виджет нажат. |
selected | «Включено», «истина» или «текущее» для элементов, таких как Checkbuttons и радиокнопки. |
background | В Windows и macOS есть понятие «активного» или фонового окна. Состояние 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в противном случае. Если обратный вызов указан, он вызывается с аргументами, если состояние виджета соответствует statespec.
-
state(statespec=None) -
Изменяет или запрашивает состояние виджета. Если statespec указан, устанавливает состояние виджета в соответствии с ним и возвращает новое statespec, указывающее, какие флаги были изменены. Если statespec не указан, возвращает текущие флаги состояния, которые включены.
statespec обычно является списком или кортежем.
-
Комбобокс
Виджет 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.
Параметры
Этот виджет принимает следующие специфические параметры:
Параметр | Описание |
|---|---|
exportselection | Булево значение. Если установлено, выделение виджета связано с выделением менеджера окон (которое можно получить, вызвав Misc.selection_get, например). |
justify | Определяет выравнивание текста внутри виджета. Одно из «слева», «по центру» или «справа». |
height | Указывает высоту всплывающего списка, в строках. |
postcommand | Скрипт (возможно, зарегистрированный с помощью Misc.register), который вызывается непосредственно перед отображением значений. Он может указать, какие значения отображать. |
state | Одно из «нормальное», «только чтение» или «отключено». В состоянии «только чтение» значение нельзя редактировать напрямую, и пользователь может только выбирать значения из выпадающего списка. В состоянии «нормальное» текстовое поле можно редактировать напрямую. В состоянии «отключено» взаимодействие невозможно. |
textvariable | Указывает имя, значение которого связано со значением виджета. Всякий раз, когда значение, связанное с этим именем, изменяется, значение виджета обновляется, и наоборот. См. |
values | Указывает список значений для отображения во всплывающем списке. |
width | Указывает целое значение, определяющее желаемую ширину окна ввода в средних символах шрифта виджета. |
Виртуальные события
Виджет combobox генерирует виртуальное событие <<ComboboxSelected>>, когда пользователь выбирает элемент из списка значений.
ttk.Combobox
-
class tkinter.ttk.Combobox -
-
current(newindex=None) -
Если newindex указан, устанавливает значение combobox в позицию элемента newindex. В противном случае возвращает индекс текущего значения или -1, если текущее значение не находится в списке значений.
-
get() -
Возвращает текущее значение combobox.
-
set(value) -
Устанавливает значение combobox в value.
-
Спинбокс
Виджет 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 | Число с плавающей точкой. Если установлено, это минимальное значение, до которого кнопка уменьшения будет уменьшать. При использовании в качестве аргумента должно быть написано как |
to | Число с плавающей точкой. Если установлено, это максимальное значение, до которого кнопка увеличения будет увеличивать. |
increment | Число с плавающей точкой. Указывает величину, на которую кнопки увеличения/уменьшения изменяют значение. По умолчанию равно 1.0. |
values | Последовательность строковых или числовых значений с плавающей точкой. Если указано, кнопки увеличения/уменьшения будут циклически проходить по элементам в этой последовательности вместо увеличения или уменьшения чисел. |
wrap | Булево значение. Если |
format | Строковое значение. Определяет формат чисел, устанавливаемых кнопками увеличения/уменьшения. Он должен иметь вид «%W.Pf», где W — заполненная ширина значения, P — точность, а «%» и «f» — литералы. |
command | Вызываемый объект Python. Будет вызываться без аргументов всякий раз, когда нажимаются кнопки увеличения или уменьшения. |
Виртуальные события
Виджет spinbox генерирует виртуальное событие <<Increment>>, когда пользователь нажимает клавишу <Up>, и виртуальное событие <<Decrement>>, когда пользователь нажимает клавишу <Down>.
ttk.Spinbox
-
class tkinter.ttk.Spinbox -
-
get() -
Возвращает текущее значение spinbox.
-
set(value) -
Устанавливает значение spinbox в value.
-
Блокнот
Виджет ttk Notebook управляет набором окон и отображает по одному за раз. Каждое дочернее окно ассоциировано с вкладкой, которую пользователь может выбрать для изменения текущего отображаемого окна.
Параметры
Этот виджет принимает следующие специфические параметры:
Параметр | Описание |
|---|---|
height | Если указан и больше нуля, задаёт желаемую высоту области панели (без учёта внутренних отступов или вкладок). В противном случае используется максимальная высота всех панелей. |
padding | Задаёт количество дополнительного пространства, добавляемого вокруг внешней стороны блокнота. Отступ — список из до четырёх значений, задающих ширину слева, сверху, справа и снизу. Если указано меньше четырёх элементов, нижний отступ по умолчанию равен верхнему, а правый — левому, а верхний — левому. |
width | Если указан и больше нуля, задаёт желаемую ширину области панели (без учёта внутренних отступов). В противном случае используется максимальная ширина всех панелей. |
Параметры вкладок
Также существуют специфические параметры для вкладок:
Параметр | Описание |
|---|---|
state | Может принимать значения «normal», «disabled» или «hidden». Если «disabled», вкладка недоступна для выбора. Если «hidden», вкладка не отображается. |
sticky | Задает, как дочернее окно размещается в области панели. Значение — строка, содержащая ноль или более символов «n», «s», «e» или «w». Каждый символ относится к стороне (север, юг, восток или запад), к которой прилипает дочернее окно, в соответствии с менеджером геометрии |
padding | Задаёт количество дополнительного пространства между блокнотом и этой панелью. Синтаксис такой же, как для параметра padding, используемого этим виджетом. |
text | Задает текст, который будет отображаться на вкладке. |
image | Задает изображение для отображения на вкладке. См. параметр image, описанный в |
compound | Задаёт, как отобразить изображение относительно текста, если оба параметра text и image присутствуют. См. Параметры Label для допустимых значений. |
underline | Задаёт индекс (нумерация с 0) символа для подчёркивания в строке текста. Подчёркнутый символ используется для активации мнемоники, если вызвана функция |
Идентификаторы вкладок
Параметр tab_id, присутствующий в нескольких методах ttk.Notebook, может принимать следующие формы:
- Целое число от нуля до количества вкладок
- Имя дочернего окна
- Позиционное указание вида «@x,y», которое идентифицирует вкладку
- Литеральная строка «current», которая идентифицирует текущую вкладку
- Литеральная строка «end», которая возвращает количество вкладок (только для
Notebook.index())
Виртуальные события
Этот виджет генерирует виртуальное событие <<NotebookTabChanged>> после выбора новой вкладки.
ttk.Notebook
-
class tkinter.ttk.Notebook -
-
add(child, **kw) -
Добавляет новую вкладку в блокнот.
Если окно в данный момент управляется блокнотом, но скрыто, оно восстанавливается в своём предыдущем положении.
См. Параметры вкладок для списка доступных параметров.
-
forget(tab_id) -
Удаляет вкладку, указанную параметром tab_id, отключает и отменяет управление связанным окном.
-
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 уже управляется блокнотом, перемещает его в указанную позицию.
См. Параметры вкладок для списка доступных параметров.
-
select(tab_id=None) -
Выбирает указанную вкладку tab_id.
Связанное дочернее окно будет отображено, а ранее выбранное окно (если отличается) — скрыто. Если tab_id опущено, возвращает имя виджета текущей выбранной панели.
-
tab(tab_id, option=None, **kw) -
Запрос или изменение параметров конкретной вкладки tab_id.
Если kw не указан, возвращает словарь значений параметров вкладки. Если option задан, возвращает значение этого option. В противном случае устанавливает параметры на соответствующие значения.
-
tabs() -
Возвращает список окон, управляемых блокнотом.
-
enable_traversal() -
Включить перемещение по клавиатуре для главного окна, содержащего этот блокнот.
Это добавит следующие сочетания клавиш для главного окна, содержащего блокнот:
- Ctrl-Tab: выбирает вкладку, следующую за текущей.
- Shift-Ctrl-Tab: выбирает вкладку, предшествующую текущей.
- Alt-K: где K — мнемонический (подчёркнутый) символ любой вкладки, выберет эту вкладку.
Несколько блокнотов в одном главном окне могут быть включены для перемещения, включая вложенные блокноты. Однако перемещение по блокнотам работает корректно только в том случае, если все панели имеют в качестве родителя блокнот.
-
Индикатор выполнения
Виджет ttk.Progressbar показывает состояние длительной операции. Он может работать в двух режимах: 1) определённом режиме, который показывает процент выполнения по отношению к общему объёму работы, и 2) неопределённом режиме, который предоставляет анимированное отображение, чтобы пользователь понимал, что работа выполняется.
Параметры
Этот виджет принимает следующие специфические параметры:
Параметр | Описание |
|---|---|
orient | Одно из значений «horizontal» или «vertical». Задает ориентацию индикатора выполнения. |
length | Задаёт длину большой оси индикатора выполнения (ширину, если горизонтальный, высоту, если вертикальный). |
mode | Одно из значений «determinate» или «indeterminate». |
maximum | Число, определяющее максимальное значение. По умолчанию 100. |
value | Текущее значение индикатора выполнения. В режиме «determinate» это представляет количество выполненной работы. В режиме «indeterminate» интерпретируется как остаток от деления на maximum; то есть, индикатор выполнения завершает один «цикл», когда его значение увеличивается на maximum. |
variable | Имя, связанное со значением параметра. Если указано, значение индикатора выполнения автоматически устанавливается в значение этого имени всякий раз, когда последнее изменяется. |
phase | Только для чтения. Виджет периодически увеличивает значение этого параметра всякий раз, когда его значение больше 0 и, в режиме determinate, меньше maximum. Этот параметр может использоваться текущей темой для обеспечения дополнительных эффектов анимации. |
ttk.Progressbar
-
class tkinter.ttk.Progressbar -
-
start(interval=None) -
Начать режим автоматического увеличения: планирует периодическое событие таймера, вызывающее
Progressbar.step()каждые interval миллисекунд. Если опущено, interval по умолчанию составляет 50 миллисекунд.
-
step(amount=None) -
Увеличивает значение индикатора выполнения на amount.
amount по умолчанию 1.0, если опущено.
-
stop() -
Остановить режим автоматического увеличения: отменяет любое периодическое событие таймера, инициированное
Progressbar.start()для этого индикатора выполнения.
-
Разделитель
Виджет ttk.Separator отображает горизонтальную или вертикальную разделительную линию.
Он не имеет других методов помимо унаследованных от ttk.Widget.
Параметры
Этот виджет принимает следующие параметры:
Параметр | Описание |
|---|---|
orient | Один из “horizontal” или “vertical”. Указывает ориентацию разделителя. |
Маркер изменения размера
Виджет ttk.Sizegrip (также известный как рамка изменения размера) позволяет пользователю изменять размер окна-контейнера, нажав и перетащив маркер.
Этот виджет не имеет специфических параметров и методов, кроме унаследованных от ttk.Widget.
Примечания к платформам
- В macOS окна-контейнеры автоматически включают встроенный маркер изменения размера по умолчанию. Добавление
Sizegripбезопасно, так как встроенный маркер просто замаскирует виджет.
Ошибки
- Если позиция содержащего окна-контейнера была задана относительно правой или нижней границы экрана (например, …), то виджет
Sizegripне будет изменять размер окна. - Этот виджет поддерживает только изменение размера по направлению “юго-восток”.
Деревовидное представление
Виджет ttk.Treeview отображает иерархическую коллекцию элементов. Каждый элемент имеет текстовую метку, необязательное изображение и необязательный список значений данных. Значения данных отображаются в последовательных столбцах после метки дерева.
Порядок отображения значений данных может быть изменен путем установки параметра виджета displaycolumns. Виджет дерева также может отображать заголовки столбцов. К столбцам можно получить доступ по номеру или символьному имени, указанным в параметре виджета columns. Смотрите Идентификаторы столбцов.
Каждый элемент идентифицируется уникальным именем. Виджет будет генерировать идентификаторы элементов, если они не предоставлены вызывающим кодом. Существует выделенный корневой элемент, имеющий имя {}. Сам корневой элемент не отображается; его дочерние элементы появляются на верхнем уровне иерархии.
Каждый элемент также имеет список тегов, которые могут быть использованы для ассоциации привязок событий с отдельными элементами и управления внешним видом элемента.
Виджет Treeview поддерживает горизонтальную и вертикальную прокрутку, согласно параметрам, описанным в Параметры прокручиваемых виджетов, и методам Treeview.xview() и Treeview.yview().
Параметры
Этот виджет принимает следующие параметры:
Параметр | Описание |
|---|---|
columns | Список идентификаторов столбцов, определяющих количество столбцов и их имена. |
displaycolumns | Список идентификаторов столбцов (либо символьные, либо целочисленные индексы), определяющих, какие столбцы данных отображаются и в каком порядке, или строка “#all”. |
height | Указывает количество видимых строк. Примечание: требуемая ширина определяется суммой ширины столбцов. |
padding | Указывает внутренний отступ для виджета. Отступ – это список из до четырёх значений длины. |
selectmode |
Управляет тем, как встроенные привязки класса управляют выбором. Один из “extended”, “browse” или “none”. Если установлен “extended” (по умолчанию), можно выбрать несколько элементов. Если “browse”, одновременно можно выбрать только один элемент. Если “none”, выбор не изменится. Обратите внимание, что код приложения и привязки тегов могут устанавливать выбор по своему усмотрению, независимо от значения этого параметра. |
show |
Список, содержащий ноль или более из следующих значений, определяющих, какие элементы дерева отображать.
По умолчанию – “tree headings”, т.е. отображаются все элементы. Примечание: Столбец #0 всегда относится к столбцу дерева, даже если show=”tree” не указан. |
Параметры элементов
Следующие параметры элементов могут быть указаны для элементов в командах insert и item виджета.
Параметр | Описание |
|---|---|
text | Текстовая метка для отображения элемента. |
image | Изображение Tk, отображаемое слева от метки. |
values |
Список значений, связанных с элементом. Каждый элемент должен иметь такое же количество значений, как параметр виджета columns. Если значений меньше, чем столбцов, оставшиеся значения считаются пустыми. Если значений больше, чем столбцов, лишние значения игнорируются. |
open | Значение |
tags | Список тегов, связанных с этим элементом. |
Параметры тегов
Для тегов могут быть указаны следующие параметры:
Параметр | Описание |
|---|---|
foreground | Устанавливает цвет переднего плана текста. |
background | Устанавливает цвет фона ячейки или элемента. |
font | Устанавливает шрифт для отображения текста. |
image | Указывает изображение элемента, если параметр image элемента пуст. |
Идентификаторы столбцов
Идентификаторы столбцов могут иметь следующие формы:
- Символьное имя из списка параметров columns.
- Целое число n, определяющее n-й столбец данных.
- Строка вида #n, где n – целое число, определяющее n-й отображаемый столбец.
Примечания:
- Значения параметров элементов могут отображаться в другом порядке, чем порядок их хранения.
- Столбец #0 всегда относится к столбцу дерева, даже если show=”tree” не указан.
Номер столбца данных – это индекс в списке значений параметров элемента; номер отображаемого столбца – это номер столбца в дереве, где отображаются значения. Метки дерева отображаются в столбце #0. Если параметр displaycolumns не задан, то столбец данных n отображается в столбце #n+1. Опять же, столбец #0 всегда относится к столбцу дерева.
Виртуальные события
Виджет Treeview генерирует следующие виртуальные события.
Событие | Описание |
|---|---|
<<TreeviewSelect>> | Генерируется при каждом изменении выбора. |
<<TreeviewOpen>> | Генерируется непосредственно перед установкой фокуса на открытый элемент. |
<<TreeviewClose>> | Генерируется непосредственно после установки фокуса на закрытый элемент. |
Методы Treeview.focus() и Treeview.selection() могут быть использованы для определения затронутых элементов.
ttk.Treeview
-
class tkinter.ttk.Treeview -
-
bbox(item, column=None) -
Возвращает прямоугольник (относительно окна виджета ttk.Treeview) заданного элемента в виде (x, y, ширина, высота).
Если указан столбец, возвращает прямоугольник ячейки. Если элемент не виден (например, является потомком закрытого элемента или находится за пределами области видимости из-за прокрутки), возвращается пустая строка.
-
get_children(item=None) -
Возвращает список дочерних элементов, принадлежащих элементу.
Если элемент не указан, возвращает дочерние элементы корневого элемента.
-
set_children(item, *newchildren) -
Заменяет дочерние элементы элемента на новые_элементы.
Дочерние элементы элемента, отсутствующие в новых_элементах, отсоединяются от дерева. Элементы в новых_элементах не могут быть предками элемента. Отсутствие новых_элементов приводит к отсоединению дочерних элементов элемента.
-
column(column, option=None, **kw) -
Запрос или изменение опций для указанного столбца.
Если kw не указан, возвращает словарь значений опций столбца. Если указан параметр, возвращается значение этого параметра. В противном случае опции устанавливаются соответствующим значениям.
Допустимые опции/значения:
- id
-
Возвращает имя столбца. Эта опция является только для чтения.
- anchor: Одно из стандартных значений выравнивания Tk.
-
Указывает, как текст в этом столбце должен быть выровнен в ячейке.
- minwidth: ширина
-
Минимальная ширина столбца в пикселях. Виджет ttk.Treeview не уменьшит столбец меньше, чем указано в этой опции, при изменении размера виджета или при перетаскивании пользователем столбца.
-
stretch: True/False -
Указывает, должна ли ширина столбца подстраиваться при изменении размера виджета.
- width: ширина
-
Ширина столбца в пикселях.
Для настройки столбца дерева вызовите метод со столбцом = “#0”
-
delete(*items) -
Удаляет все указанные элементы и все их потомки.
Корневой элемент удалить нельзя.
-
detach(*items) -
Отсоединяет все указанные элементы от дерева.
Элементы и все их потомки все еще присутствуют и могут быть повторно вставлены в другое место дерева, но не будут отображаться.
Корневой элемент отсоединить нельзя.
-
exists(item) -
Возвращает
True, если указанный элемент присутствует в дереве.
-
focus(item=None) -
Если указан элемент, устанавливает фокус на элемент. В противном случае возвращает текущий фокусированный элемент или ‘’ если фокуса нет.
-
heading(column, option=None, **kw) -
Запрос или изменение опций заголовка для указанного столбца.
Если kw не указан, возвращает словарь значений опций заголовка. Если указан параметр, возвращается значение этого параметра. В противном случае опции устанавливаются соответствующим значениям.
Допустимые опции/значения:
- text: текст
-
Текст, который будет отображаться в заголовке столбца.
- image: имя_изображения
-
Указывает изображение, которое должно отображаться справа от заголовка столбца.
- anchor: выравнивание
-
Указывает выравнивание текста заголовка. Одно из стандартных значений выравнивания Tk.
- command: обратная_функция
-
Обратная функция, которая будет вызвана при нажатии на метку заголовка.
Для настройки заголовка столбца дерева вызовите этот метод со столбцом = “#0”.
-
identify(component, x, y) -
Возвращает описание указанного компонента под точкой с координатами x и y, или пустую строку, если такой компонент в этой точке отсутствует.
-
identify_row(y) -
Возвращает идентификатор элемента в позиции y.
-
identify_column(x) -
Возвращает идентификатор столбца данных ячейки в позиции x.
Столбец дерева имеет ID #0.
-
identify_region(x, y) -
Возвращает одно из следующих значений:
область
значение
заголовок
Область заголовка дерева.
разделитель
Пространство между заголовками двух столбцов.
дерево
Область дерева.
ячейка
Ячейка данных.
Доступность: Tk 8.6.
-
identify_element(x, y) -
Возвращает элемент в позиции x, y.
Доступность: Tk 8.6.
-
index(item) -
Возвращает целочисленный индекс элемента в списке дочерних элементов родительского элемента.
-
insert(parent, index, iid=None, **kw) -
Создает новый элемент и возвращает идентификатор созданного элемента.
родитель — идентификатор родительского элемента, или пустая строка для создания нового элемента верхнего уровня. индекс — целое число или значение «end», указывающее, куда в списке дочерних элементов родителя вставить новый элемент. Если индекс меньше или равен нулю, новый узел вставляется в начало; если индекс больше или равен текущему количеству дочерних элементов, он вставляется в конец. Если указан iid, он используется в качестве идентификатора элемента; iid не должен уже существовать в дереве. В противном случае генерируется новый уникальный идентификатор.
См. Опции элемента для списка доступных опций.
-
item(item, option=None, **kw) -
Запрос или изменение опций для указанного элемента.
Если опции не указаны, возвращается словарь опций/значений элемента. Если указан параметр, возвращается значение этого параметра. В противном случае опции устанавливаются соответствующим значениям, заданным в kw.
-
move(item, parent, index) -
Перемещает элемент в позицию индекс в списке дочерних элементов родителя.
Нельзя перемещать элемент в поддерево, являющееся его потомком. Если индекс меньше или равен нулю, элемент перемещается в начало; если больше или равен количеству дочерних элементов, он перемещается в конец. Если элемент был отсоединен, он повторно присоединяется.
-
next(item) -
Возвращает идентификатор следующего брата элемента, или ‘’ если элемент является последним ребенком своего родителя.
-
parent(item) -
Возвращает идентификатор родителя элемента, или ‘’ если элемент находится на верхнем уровне иерархии.
-
prev(item) -
Возвращает идентификатор предыдущего брата элемента, или ‘’ если элемент является первым ребенком своего родителя.
-
reattach(item, parent, index) -
Псевдоним для
Treeview.move().
-
see(item) -
Обеспечивает видимость элемента.
Устанавливает значение опции «открыт» для всех предков элемента в значение
True, и при необходимости прокручивает виджет так, чтобы элемент находился в области видимости дерева.
-
selection() -
Возвращает кортеж выбранных элементов.
Изменено в версии 3.8:
selection()больше не принимает аргументы. Для изменения состояния выбора используйте методы выбора.
-
selection_set(*items) -
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) -
С одним аргументом возвращает словарь пар «столбец/значение» для указанного 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) -
Запрос или изменение горизонтального положения treeview.
-
yview(*args) -
Запрос или изменение вертикального положения treeview.
-
Стиль 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 — это параметр, а каждое значение должно быть списком или кортежем (обычно) содержащим state-спецификации сгруппированные в кортежи, списки или с другой группировкой. State-спецификация представляет собой соединение одного или нескольких состояний и значения.
Пример поможет лучше понять:
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')]в параметре foreground, например, результат будет синим цветом переднего плана, когда виджет находится в активном или нажатом состоянии.
-
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.6 на Windows.
Если используется “image”, args должен содержать имя изображения по умолчанию, за которым следуют пары state-спецификация/значение (это imagespec), а kw может иметь следующие параметры:
- border=padding
-
padding — список до четырёх целых чисел, задающих отступы слева, сверху, справа и снизу соответственно.
- height=height
-
Устанавливает минимальную высоту для элемента. Если меньше нуля, используется высота базового изображения по умолчанию.
- padding=padding
-
Устанавливает внутренний отступ элемента. По умолчанию равен значению border, если не указан.
- sticky=spec
-
Указывает, как изображение размещается внутри окончательной области. spec содержит ноль или более символов “n”, “s”, “w” или “e”.
- width=width
-
Устанавливает минимальную ширину элемента. Если меньше нуля, используется ширина базового изображения по умолчанию.
Пример:
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')Если в качестве значения etype используется “from”,
element_create()клонирует существующий элемент. args ожидается, что он будет содержать имя темы, из которой будет клонирован элемент, и, необязательно, элемент для клонирования. Если этот элемент для клонирования не указан, используется пустой элемент. kw игнорируется.Пример:
style = ttk.Style(root) style.element_create('plain.background', 'from', 'default')Если в качестве значения etype используется “vsapi”,
element_create()создаст новый элемент в текущей теме, внешний вид которого отрисовывается с помощью API Microsoft Visual Styles, который отвечает за стили тем на Windows XP и Vista. args ожидается, что он будет содержать класс и часть Visual Styles, как указано в документации Microsoft, за которым следует необязательная последовательность кортежей состояний ttk и соответствующих значений состояния API Visual Styles. kw может иметь следующие параметры:- padding=padding
-
Задает внутренний отступ элемента. padding — список до четырёх целых чисел, задающих отступы слева, сверху, справа и снизу соответственно. Если указано меньше четырёх элементов, снизу по умолчанию равен сверху, справа равен слева, а сверху равен слева. Другими словами, список из трёх чисел задаёт отступ слева, вертикальный и справа; список из двух чисел задаёт горизонтальный и вертикальный отступ; одно число задаёт одинаковый отступ по всем сторонам виджета. Этот параметр нельзя смешивать с другими параметрами.
- margins=padding
-
Задает внешний отступ элемента. padding — список до четырёх целых чисел, задающих отступы слева, сверху, справа и снизу соответственно. Этот параметр нельзя смешивать с другими параметрами.
- width=width
-
Устанавливает ширину элемента. Если этот параметр задан, API Visual Styles не будет запрашивать рекомендуемый размер или часть. Если этот параметр задан, также должен быть задан параметр height. Параметры width и height нельзя смешивать с параметрами padding или margins.
- height=height
-
Устанавливает высоту элемента. Смотрите комментарии к 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: Добавлена поддержка фабрики элементов “vsapi”.
-
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, если он не принимает параметров, или словарем параметров, определяющих способ размещения элемента. Механизм макетов использует упрощенную версию менеджера геометрии pack: дана начальная область, каждому элементу выделяется участок.
Допустимые параметры/значения:
- side: whichside
-
Задает сторону области, на которой разместить элемент; один из top, right, bottom или left. Если опущен, элемент занимает всю область.
- sticky: nswe
-
Задает, где элемент размещается внутри выделенного участка.
- unit: 0 или 1
-
Если установлено значение 1, вызывает обработку элемента и всех его потомков как единого элемента для целей
Widget.identify()и т.д. Используется для таких вещей, как полосы прокрутки с ручками. - children: [sublayout… ]
-
Задает список элементов для размещения внутри элемента. Каждый элемент — кортеж (или другой тип последовательности), где первый элемент — имя макета, а другой — Макет.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/tkinter.ttk.html