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.
Это прямо приводит к улучшенному внешнему виду и ощущению на разных платформах; однако, заменяющие виджеты не полностью совместимы. Основное различие заключается в том, что такие параметры виджетов, как «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/значение, как определено в |
compound |
Указывает, как отображать изображение относительно текста, в случае, если присутствуют и текст, и изображения. Допустимые значения:
|
width | Если больше нуля, указывает, сколько места, в ширине символов, выделить для метки текста; если меньше нуля, указывает минимальную ширину. Если ноль или не указано, используется естественная ширина метки текста. |
Опции совместимости
Опция | Описание |
|---|---|
state | Может быть установлено в «normal» или «disabled», чтобы управлять флагом «disabled». Это опция только для записи: её установка изменяет состояние виджета, но метод |
Состояния виджета
Состояние виджета — это битовая карта независимых флагов состояния.
Флаг | Описание |
|---|---|
active | Курсор мыши над виджетом, и нажатие кнопки мыши вызовет какое-либо действие |
disabled | Виджет отключен под управлением программы |
focus | Виджет имеет фокус клавиатуры |
pressed | Виджет нажимается |
selected | «Включено», «истина» или «текущее» для таких элементов, как 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в противном случае. Если указан обратный вызов, он вызывается с аргументами, если состояние виджета соответствует 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 генерирует виртуальное событие <<Увеличение>>, когда пользователь нажимает <Вверх>, и виртуальное событие <<Уменьшение>>, когда пользователь нажимает <Вниз>.
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() -
Включает проход по клавиатуре для главного окна, содержащего эту записную книжку.
Это расширит привязки для главного окна, содержащего записную книжку следующим образом:
- 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 | Одно из «горизонтального» или «вертикального». Указывает ориентацию разделителя. |
Маркер изменения размера
Виджет ttk.Sizegrip (также известный как рамка изменения размера) позволяет пользователю изменять размер содержащего его окна, нажимая и перетаскивая маркер.
Этот виджет не имеет специфических параметров и методов, кроме унаследованных от ttk.Widget.
Примечания к платформе
- В macOS окна по умолчанию автоматически включают встроенный маркер изменения размера. Добавление
Sizegripне повлияет на работу, так как встроенный маркер просто замаскирует виджет.
Ошибки
- Если позиция содержащего его окна задана относительно правой или нижней стороны экрана (например, …), виджет
Sizegripне сможет изменить размер окна. - Этот виджет поддерживает только изменение размера в направлении «юго-восток».
Дерево
Виджет ttk.Treeview отображает иерархическое множество элементов. Каждый элемент имеет текстовую метку, необязательное изображение и необязательный список значений данных. Значения данных отображаются в последовательных столбцах после метки дерева.
Порядок отображения значений данных может быть изменен установкой параметра виджета displaycolumns. Виджет дерева также может отображать заголовки столбцов. Доступ к столбцам можно получить по номеру или символическим именам, указанным в параметре виджета columns. См. Идентификаторы столбцов.
Каждый элемент идентифицируется уникальным именем. Виджет будет генерировать идентификаторы элементов, если они не предоставлены вызывающей стороной. Есть выделенный корневой элемент с именем {}. Сам корневой элемент не отображается; его дочерние элементы появляются на верхнем уровне иерархии.
Каждый элемент также имеет список тегов, которые могут использоваться для связывания событий с отдельными элементами и управления внешним видом элемента.
Виджет Дерево поддерживает горизонтальное и вертикальное прокручивание в соответствии с параметрами, описанными в Параметры прокручиваемого виджета и методами 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 всегда относится к столбцу дерева.
Виртуальные события
Виджет Дерево генерирует следующие виртуальные события.
Событие | Описание |
|---|---|
<<TreeviewSelect>> | Генерируется всякий раз, когда изменяется выбор. |
<<TreeviewOpen>> | Генерируется непосредственно перед установкой фокуса элемента open=True. |
<<TreeviewClose>> | Генерируется непосредственно после установки фокуса элемента open=False. |
Методы Treeview.focus() и Treeview.selection() могут использоваться для определения затронутых элементов.
ttk.Treeview
-
class tkinter.ttk.Treeview
-
-
bbox(item, column=None) -
Возвращает прямоугольную область (относительно окна виджета treeview) указанного элемента в виде (x, y, ширина, высота).
Если указан столбец, возвращает прямоугольную область этой ячейки. Если элемент не отображается (например, если он является потомком закрытого элемента или находится вне области просмотра), возвращает пустую строку.
-
get_children(item=None) -
Возвращает список дочерних элементов, принадлежащих элементу.
Если элемент не указан, возвращает дочерние элементы корневого элемента.
-
set_children(item, *newchildren) -
Заменяет дочерние элементы элемента на newchildren.
Дочерние элементы элемента, отсутствующие в newchildren, отсоединяются от дерева. Ни один из элементов в newchildren не может быть предком элемента. Обратите внимание, что отсутствие newchildren приводит к отсоединению дочерних элементов элемента.
-
column(column, option=None, **kw) -
Запрос или изменение параметров указанного столбца.
Если kw не указан, возвращает словарь значений параметров столбца. Если указан option, возвращается значение этого option. В противном случае, параметры устанавливаются соответствующими значениями.
Допустимые параметры/значения:
-
- id
-
Возвращает имя столбца. Это параметр только для чтения.
-
- anchor: Одно из стандартных значений выравнивания Tk.
-
Определяет выравнивание текста в этом столбце относительно ячейки.
-
- minwidth: ширина
-
Минимальная ширина столбца в пикселях. Виджет treeview не сделает столбец меньше, чем указано в этом параметре, при изменении размера виджета или при перетаскивании пользователем столбца.
-
-
stretch: True/False -
Указывает, должна ли ширина столбца изменяться при изменении размера виджета.
-
-
- width: ширина
-
Ширина столбца в пикселях.
Для настройки столбца дерева вызовите этот метод со столбцом = “#0”.
-
-
delete(*items) -
Удаляет все указанные элементы и все их потомки.
Корневой элемент не может быть удален.
-
detach(*items) -
Отсоединяет все указанные элементы от дерева.
Элементы и все их потомки по-прежнему присутствуют и могут быть повторно вставлены в другое место дерева, но не будут отображаться.
Корневой элемент не может быть отсоединен.
-
exists(item) -
Возвращает
True, если указанный элемент присутствует в дереве.
-
focus(item=None) -
Если указан элемент, устанавливает элемент как элемент фокуса. В противном случае возвращает текущий элемент фокуса или ‘’ если его нет.
-
heading(column, option=None, **kw) -
Запрос или изменение параметров заголовка указанного столбца.
Если kw не указан, возвращает словарь значений параметров заголовка. Если указан option, возвращается значение этого option. В противном случае, параметры устанавливаются соответствующими значениями.
Допустимые параметры/значения:
-
- text: текст
-
Текст, отображаемый в заголовке столбца.
-
- image: имя_изображения
-
Указывает изображение, которое должно отображаться справа от заголовка столбца.
-
- anchor: выравнивание
-
Определяет выравнивание текста заголовка. Одно из стандартных значений выравнивания Tk.
-
- command: обратный_вызов
-
Обратный вызов, который вызывается при нажатии на метку заголовка.
Для настройки заголовка столбца дерева вызовите этот метод со столбцом = “#0”.
-
-
identify(component, x, y) -
Возвращает описание указанного компонента под точкой, заданной x и y, или пустую строку, если такой компонент отсутствует в этой позиции.
-
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) -
Возвращает целочисленный индекс элемента в списке дочерних элементов его родителя.
-
insert(parent, index, iid=None, **kw) -
Создает новый элемент и возвращает идентификатор вновь созданного элемента.
родитель — идентификатор родительского элемента, или пустая строка для создания нового корневого элемента. индекс — целое число или значение «end», указывающее, куда в списке дочерних элементов родителя вставить новый элемент. Если индекс меньше или равен нулю, новый узел вставляется в начало; если индекс больше или равен текущему количеству дочерних элементов, он вставляется в конец. Если указан iid, он используется как идентификатор элемента; iid не должен уже существовать в дереве. В противном случае генерируется новый уникальный идентификатор.
См. Параметры элемента для списка доступных параметров.
-
item(item, option=None, **kw) -
Запрос или изменение параметров указанного элемента.
Если параметры не указаны, возвращается словарь параметров/значений для элемента. Если указан option, возвращается значение этого option. В противном случае параметры устанавливаются соответствующими значениями, заданными в kw.
-
move(item, parent, index) -
Перемещает элемент в позицию индекс в списке дочерних элементов родителя.
Нельзя перемещать элемент в поддерево, которое он содержит. Если индекс меньше или равен нулю, элемент перемещается в начало; если больше или равен количеству дочерних элементов, он перемещается в конец. Если элемент был отсоединён, он прикрепляется заново.
-
next(item) -
Возвращает идентификатор следующего по порядку элемента-потомка элемента, или ‘’ если элемент является последним потомком его родителя.
-
parent(item) -
Возвращает идентификатор родителя элемента, или ‘’ если элемент находится на верхнем уровне иерархии.
-
prev(item) -
Возвращает идентификатор предыдущего элемента-потомка элемента, или ‘’ если элемент является первым потомком его родителя.
-
reattach(item, parent, index) -
Псевдоним для
Treeview.move().
-
see(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) -
С одним аргументом возвращает словарь пар «столбец/значение» для указанного элемента. С двумя аргументами возвращает текущее значение указанного столбца. С тремя аргументами устанавливает значение заданного столбца в заданном элементе на указанное значение.
-
-
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 — это параметр, а каждое значение должно быть списком или кортежем (обычно) содержащим состояния, сгруппированные в кортежи, списки или другие типы. Состояние — это составной элемент из одного или нескольких состояний, а затем значения.
Пример может сделать его более понятным:
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.6a для Windows XP и Vista и здесь не описан.
Если используется «image», args должен содержать имя изображения по умолчанию, за которым следуют пары состояние/значение (это imagespec), а kw может иметь следующие параметры:
-
- border=padding
-
padding — это список из не более четырёх целых чисел, указывающих левые, верхние, правые и нижние границы соответственно.
-
- height=height
-
Устанавливает минимальную высоту элемента. Если значение меньше нуля, используется высота базового изображения по умолчанию.
-
- padding=padding
-
Устанавливает внутренний отступ элемента. По умолчанию равен значению border, если не указано.
-
- 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, если он не принимает параметры, или словарем параметров, определяющих способ организации элемента. Механизм макета использует упрощённую версию менеджера геометрии 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.10/library/tkinter.ttk.html