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 | Указывает имя, значение которого будет использоваться вместо ресурса параметра text. |
underline | Если задано, указывает индекс (с нуля) символа, который нужно подчеркнуть в строке текста. Подчеркнутый символ используется для активации мнемоники. |
image | Указывает изображение для отображения. Это список из 1 или более элементов. Первый элемент — это имя изображения по умолчанию. Остальная часть списка — это последовательность пар state/value, как определено в |
compound |
Указывает, как отобразить изображение относительно текста, в случае если присутствуют как параметр текста, так и изображения. Допустимые значения:
|
width | Если больше нуля, указывает, сколько места, в ширине символов, выделить для метки текста. Если меньше нуля, указывает минимальную ширину. Если ноль или не указано, используется естественная ширина метки текста. |
Параметры совместимости
Параметр | Описание |
|---|---|
state | Может быть установлен в «normal» или «disabled» для управления битом состояния «disabled». Это параметр только для записи: его задание изменяет состояние виджета, но метод |
Состояния виджета
Состояние виджета — это битовая карта независимых флагов состояния.
Флаг | Описание |
|---|---|
active | Курсор мыши находится над виджетом, и нажатие кнопки мыши вызовет какое-либо действие |
disabled | Виджет отключен под управлением программы |
focus | Виджет имеет фокус клавиатуры |
pressed | Виджет нажат |
selected | «Включено», «истина» или «текущее» для элементов, таких как Checkbuttons и radiobuttons |
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 | Указывает, как выравнивается текст внутри виджета. Одно из значений “left”, “center”, или “right”. |
height | Указывает высоту раскрывающегося списка, в строках. |
postcommand | Скрипт (возможно, зарегистрированный с помощью Misc.register), который вызывается непосредственно перед отображением значений. Он может указать, какие значения отображать. |
state | Одно из значений “normal”, “readonly”, или “disabled”. В состоянии “readonly” значение нельзя редактировать напрямую, а пользователь может только выбрать значение из раскрывающегося списка. В состоянии “normal” текстовое поле можно редактировать напрямую. В состоянии “disabled” взаимодействие невозможно. |
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>> при нажатии клавиши <Вверх> и виртуальное событие <<Decrement>> при нажатии клавиши <Вниз>.
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. См. Параметры метки для допустимых значений. |
underline | Задаёт индекс (с нуля) символа для подчеркивания в строке текста. Подчеркнутый символ используется для активации мнемоники, если вызван |
Идентификаторы вкладок
Параметр 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() -
Включает перемещение по клавиатуре для главного окна, содержащего этот блокнот.
Это расширит привязки для главного окна, содержащего блокнот следующим образом:
- Control-Tab: выбирает вкладку, следующую за текущей.
- Shift-Control-Tab: выбирает вкладку, предшествующую текущей.
- Alt-K: где K — мнемонический (подчеркнутый) символ любой вкладки, выберет эту вкладку.
Несколько блокнотов в одном главном окне могут быть включены для перемещения, включая вложенные блокноты. Однако перемещение по блокноту работает правильно только в том случае, если все панели имеют блокнот, в котором они находятся, как родительское окно.
-
Полоса прогресса
Виджет ttk.Progressbar отображает статус длительной операции. Он может работать в двух режимах: 1) определённый режим, который показывает количество выполненной работы по отношению к общему объёму работы, и 2) неопределённый режим, который предоставляет анимированное отображение, чтобы пользователь знал, что работа выполняется.
Параметры
Этот виджет принимает следующие специфические параметры:
Параметр | Описание |
|---|---|
orient | Одно из «горизонтальный» или «вертикальный». Задает ориентацию полосы прогресса. |
length | Задаёт длину длинной оси полосы прогресса (ширину, если горизонтальная, высоту, если вертикальная). |
mode | Одно из «определённый» или «неопределённый». |
maximum | Число, задающее максимальное значение. По умолчанию 100. |
value | Текущее значение полосы прогресса. В режиме «определённый» это представляет количество выполненной работы. В режиме «неопределённый» интерпретируется как модуль maximum; то есть, полоса прогресса завершает один «цикл», когда её значение увеличивается на maximum. |
variable | Имя, связанное со значением параметра. Если указано, значение полосы прогресса автоматически устанавливается на значение этого имени всякий раз, когда последнее изменяется. |
phase | Только для чтения. Виджет периодически увеличивает значение этого параметра, когда его значение больше 0 и, в режиме «определённый», меньше 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 | Одно из значений «горизонтально» или «вертикально». Определяет ориентацию разделителя. |
Маркер изменения размера
Виджет 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” не указан. |
Параметры элементов
Для элементов в командах вставки и элементов виджета могут быть указаны следующие параметры элементов.
Параметр | Описание |
|---|---|
text | Текстовая метка для отображения элемента. |
image | Изображение Tk, отображаемое слева от метки. |
values |
Список значений, связанных с элементом. Каждый элемент должен иметь такое же количество значений, как параметр виджета columns. Если значений меньше, чем столбцов, оставшиеся значения считаются пустыми. Если значений больше, чем столбцов, дополнительные значения игнорируются. |
open | Значение |
tags | Список тегов, связанных с этим элементом. |
Параметры тегов
Для тегов могут быть указаны следующие параметры:
Параметр | Описание |
|---|---|
foreground | Устанавливает цвет текста переднего плана. |
background | Устанавливает цвет фона ячейки или элемента. |
font | Устанавливает шрифт для отображения текста. |
image | Устанавливает изображение элемента, в случае если параметр image элемента пуст. |
Идентификаторы столбцов
Идентификаторы столбцов могут принимать следующие формы:
- Символьное имя из списка параметров columns.
- Целое число n, указывающее n-ый столбец данных.
- Строка вида #n, где n — целое число, указывающее n-ый отображаемый столбец.
Примечания:
- Значения параметра values элементов могут быть отображены в другом порядке, чем порядок, в котором они хранятся.
- Столбец №0 всегда относится к столбцу дерева, даже если show=”tree” не указан.
Номер столбца данных — это индекс в списке значений параметра values элемента; номер отображаемого столбца — это номер столбца в дереве, где отображаются значения. Метки дерева отображаются в столбце №0. Если параметр displaycolumns не задан, то столбец данных n отображается в столбце #n+1. Опять же, столбец №0 всегда относится к столбцу дерева.
Виртуальные события
Виджет Treeview генерирует следующие виртуальные события.
Событие | Описание |
|---|---|
<<TreeviewSelect>> | Генерируется всякий раз, когда меняется выделение. |
<<TreeviewOpen>> | Генерируется непосредственно перед установкой фокуса элемента с open=True. |
<<TreeviewClose>> | Генерируется непосредственно после установки фокуса элемента с open=False. |
Методы Treeview.focus() и Treeview.selection() могут использоваться для определения затронутого элемента или элементов.
ttk.Дерево
-
class tkinter.ttk.Treeview -
-
bbox(item, column=None) -
Возвращает прямоугольник (относительно окна виджета дерева) указанного элемента в виде (x, y, ширина, высота).
Если указан столбец, возвращает прямоугольник ячейки. Если элемент не виден (т.е., является потомком закрытого элемента или находится вне области видимости), возвращается пустая строка.
-
get_children(item=None) -
Возвращает список потомков, относящихся к элементу.
Если элемент не указан, возвращает потомков корневого элемента.
-
set_children(item, *newchildren) -
Заменяет потомков элемента на newchildren.
Потомки элемента, отсутствующие в newchildren, отсоединяются от дерева. Ни один элемент в newchildren не может быть предком элемента. Обратите внимание, что отсутствие newchildren приводит к отсоединению потомков элемента.
-
column(column, option=None, **kw) -
Запрос или изменение параметров указанного столбца.
Если kw не указан, возвращает словарь значений параметров столбца. Если указан параметр, возвращается значение этого параметра. В противном случае параметры устанавливаются соответствующими значениями.
Допустимые параметры/значения:
- id
-
Возвращает имя столбца. Этот параметр является только для чтения.
- anchor: Одно из стандартных значений выравнивания Tk.
-
Определяет, как текст в этом столбце должен выравниваться относительно ячейки.
- minwidth: ширина
-
Минимальная ширина столбца в пикселях. Виджет дерева не сделает столбец меньше, чем указано в этом параметре, при изменении размера виджета или при перетаскивании пользователем столбца.
-
stretch: True/False -
Определяет, должна ли ширина столбца изменяться при изменении размера виджета.
- width: ширина
-
Ширина столбца в пикселях.
Для настройки столбца дерева вызовите его с column = “#0”
-
delete(*items) -
Удаляет все указанные элементы и всех их потомков.
Корневой элемент удалить нельзя.
-
detach(*items) -
Отсоединяет все указанные элементы от дерева.
Элементы и все их потомки все еще присутствуют и могут быть повторно вставлены в другом месте дерева, но не будут отображаться.
Корневой элемент отсоединить нельзя.
-
exists(item) -
Возвращает
True, если указанный элемент присутствует в дереве.
-
focus(item=None) -
Если указан элемент, устанавливает фокус на элемент. В противном случае возвращает текущий фокусированный элемент или ‘’ если фокуса нет.
-
heading(column, option=None, **kw) -
Запрос или изменение параметров заголовка указанного столбца.
Если kw не указан, возвращает словарь значений параметров заголовка. Если указан параметр, возвращается значение этого параметра. В противном случае параметры устанавливаются соответствующими значениями.
Допустимые параметры/значения:
- text: текст
-
Текст, отображаемый в заголовке столбца.
- image: имяИзображения
-
Указывает изображение, отображаемое справа от заголовка столбца.
- anchor: выравнивание
-
Определяет, как должен выравниваться текст заголовка. Одно из стандартных значений выравнивания Tk.
- command: обращениеКФункции
-
Обработчик, который вызывается при нажатии на метку заголовка.
Для настройки заголовка столбца дерева вызовите его с column = “#0”.
-
identify(component, x, y) -
Возвращает описание указанного компонента под точкой с координатами x и y или пустую строку, если такой компонент в этой позиции отсутствует.
-
identify_row(y) -
Возвращает идентификатор элемента в позиции y.
-
identify_column(x) -
Возвращает идентификатор столбца данных ячейки в позиции x.
Столбец дерева имеет идентификатор #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) -
элементы становятся новым выбором.
Изменено в версии 3.6: элементы могут передаваться как отдельные аргументы, а не только как один кортеж.
-
selection_add(*items) -
Добавляет элементы в выбор.
Изменено в версии 3.6: элементы могут передаваться как отдельные аргументы, а не только как один кортеж.
-
selection_remove(*items) -
Удаляет элементы из выбора.
Изменено в версии 3.6: элементы могут передаваться как отдельные аргументы, а не только как один кортеж.
-
-
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 — это опция, а каждое значение должно быть списком или кортежем (как правило), содержащим спецификации состояний, сгруппированные в кортежи, списки или другие предпочтения. Спецификация состояния — это состав из одного или нескольких состояний, а затем значения.
Пример может сделать его более понятным:
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”.
Если используется “image”, args должен содержать имя изображения по умолчанию, за которым следуют пары спецификации состояния/значения (это 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')Если «from» используется в качестве значения etype,
element_create()клонирует существующий элемент. args ожидается, что он будет содержать имя темы, из которой будет клонирован элемент, и необязательно элемент для клонирования. Если этот элемент для клонирования не указан, будет использован пустой элемент. kw игнорируется.Пример:
style = ttk.Style(root) style.element_create('plain.background', 'from', 'default')
-
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–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/library/tkinter.ttk.html