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
25.2.1. Использование 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) о различиях, обычно встречающихся при переходе приложений на использование новых виджетов.
25.2.2. Виджеты Ttk
Ttk поставляется с 17 виджетами, одиннадцать из которых уже существовали в tkinter: Button, Checkbutton, Entry, Frame, Label, LabelFrame, Menubutton, PanedWindow, Radiobutton, Scale и Scrollbar. Другие шесть — новые: 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.
25.2.3. Виджет
ttk.Widget определяет стандартные параметры и методы, поддерживаемые оформленными виджетами Tk, и не должен быть непосредственно инстанцирован.
25.2.3.1. Стандартные параметры
Все виджеты ttk принимают следующие параметры:
Параметр | Описание |
|---|---|
class | Указывает класс окна. Класс используется при запросе базы данных параметров окна для других параметров окна, для определения значений bindtags по умолчанию для окна и для выбора макета и стиля виджета по умолчанию. Этот параметр только для чтения и может быть указан только при создании окна. |
cursor | Указывает указатель мыши, используемый для виджета. Если установлено значение пустой строки (по умолчанию), указатель наследуется от родительского виджета. |
takefocus | Определяет, принимает ли окно фокус во время перехода по клавиатуре. Возвращаются 0, 1 или пустая строка. Если возвращается 0, это означает, что окно должно быть пропущено полностью при переходе по клавиатуре. Если 1, это означает, что окно должно получить фокус ввода, пока оно отображается. А пустая строка означает, что скрипты перехода принимают решение о том, фокусироваться на окне или нет. |
style | Может быть использован для указания пользовательского стиля виджета. |
25.2.3.2. Параметры прокручиваемых виджетов
Следующие параметры поддерживаются виджетами, которые управляются полосой прокрутки.
Параметр | Описание |
|---|---|
xscrollcommand |
Используется для связи с горизонтальными полосами прокрутки. Когда область видимости в окне виджета изменяется, виджет генерирует Tcl команду на основе scrollcommand. Обычно этот параметр содержит метод |
yscrollcommand | Используется для связи с вертикальными полосами прокрутки. Для дополнительной информации см. выше. |
25.2.3.3. Параметры метки
Следующие параметры поддерживаются метками, кнопками и другими похожими на кнопку виджетами.
Параметр | Описание |
|---|---|
text | Указывает строку текста, отображаемую внутри виджета. |
textvariable | Указывает имя, значение которого будет использоваться вместо ресурса параметра text. |
underline | Если задано, указывает индекс (с нуля) символа для подчеркивания в строке текста. Символ подчеркивания используется для активации мнемоники. |
image | Указывает изображение для отображения. Это список из 1 или более элементов. Первый элемент — это имя изображения по умолчанию. Остальная часть списка — это последовательность пар state/значение, как определено в |
compound |
Указывает, как отображать изображение относительно текста в случае наличия как текста, так и изображения. Допустимые значения:
|
width | Если больше нуля, задает, сколько места в символьных ширинах выделить для метки текста; если меньше нуля, задает минимальную ширину. Если ноль или не указан, используется естественная ширина метки текста. |
25.2.3.4. Параметры совместимости
Параметр | Описание |
|---|---|
state | Может быть установлен в «normal» или «disabled», чтобы управлять битом состояния «disabled». Это параметр только для записи: установка его изменяет состояние виджета, но метод |
25.2.3.5. Состояния виджета
Состояние виджета — это битовая карта независимых флагов состояния.
Флаг | Описание |
|---|---|
active | Указатель мыши находится над виджетом, и нажатие кнопки мыши вызовет какое-либо действие |
disabled | Виджет отключен под управлением программы |
focus | Виджет имеет фокус клавиатуры |
pressed | Виджет нажимается |
selected | «Вкл.», «истина» или «текущее» для таких элементов, как флажки и переключатели |
background | Окна и Mac имеют понятие «активного» или переднего окна. Состояние background устанавливается для виджетов в фоновом окне и сбрасывается для виджетов в переднем окне. |
readonly | Виджет не должен разрешать пользовательские изменения |
alternate | Специальный формат отображения, специфичный для виджета |
invalid | Значение виджета недействительно |
Спецификация состояния — это последовательность имён состояний, необязательно префикс «!» для указания того, что бит выключен.
25.2.3.6. 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 обычно будет списком или кортежем.
-
25.2.4. Combobox
Виджет ttk.Combobox объединяет текстовое поле с выпадающим списком значений. Этот виджет является подклассом Entry.
Помимо методов, унаследованных от Widget: Widget.cget(), Widget.configure(), Widget.identify(), Widget.instate() и Widget.state(), и следующих, унаследованных от Entry: Entry.bbox(), Entry.delete(), Entry.icursor(), Entry.index(), Entry.insert(), Entry.selection(), Entry.xview(), он имеет некоторые другие методы, описанные в ttk.Combobox.
25.2.4.1. Параметры
Этот виджет принимает следующие специфические параметры:
Параметр | Описание |
|---|---|
exportselection | Булевое значение. Если задано, выбор виджета связан с выбором диспетчера окон (который можно получить, вызвав Misc.selection_get, например). |
justify | Указывает, как выравнивается текст внутри виджета. Одно из «слева», «по центру» или «справа». |
height | Указывает высоту выпадающего списка, в строках. |
postcommand | Скрипт (возможно, зарегистрированный с помощью Misc.register), который вызывается непосредственно перед отображением значений. Он может указать, какие значения отображать. |
state | Одно из «normal», «readonly» или «disabled». В состоянии «readonly» значение нельзя редактировать напрямую, а пользователь может только выбрать значения из выпадающего списка. В состоянии «normal» текстовое поле редактируется непосредственно. В состоянии «disabled» взаимодействие невозможно. |
textvariable | Указывает имя, значение которого связано со значением виджета. Всякий раз, когда изменяется значение, связанное с этим именем, значение виджета обновляется и наоборот. См. |
values | Указывает список значений для отображения в выпадающем списке. |
width | Указывает целое число, определяющее желаемую ширину окна ввода в средних знаках символов шрифта виджета. |
25.2.4.2. Виртуальные события
Виджет combobox генерирует виртуальное событие <<ComboboxSelected>>, когда пользователь выбирает элемент из списка значений.
25.2.4.3. ttk.Combobox
-
class tkinter.ttk.Combobox -
-
current(newindex=None) -
Если newindex указан, устанавливает значение combobox в позицию элемента newindex. В противном случае возвращает индекс текущего значения или -1, если текущее значение не содержится в списке значений.
-
get() -
Возвращает текущее значение combobox.
-
set(value) -
Устанавливает значение combobox в value.
-
25.2.5. Notebook
Виджет Ttk Notebook управляет набором окон и отображает одно окно за раз. Каждое дочернее окно связано с вкладкой, которую пользователь может выбрать для изменения отображаемого окна.
25.2.5.1. Параметры
Этот виджет принимает следующие специфические параметры:
Параметр | Описание |
|---|---|
height | Если присутствует и больше нуля, задаёт желаемую высоту области панели (без учёта внутренних отступов или вкладок). В противном случае используется максимальная высота всех панелей. |
padding | Указывает количество дополнительного места для добавления вокруг внешней стороны блокнота. Отступ — список, содержащий до четырёх спецификаций длины — слева, сверху, справа, снизу. Если указано меньше четырёх элементов, снизу по умолчанию устанавливается сверху, справа по умолчанию устанавливается слева, а сверху по умолчанию устанавливается слева. |
width | Если присутствует и больше нуля, задаёт желаемую ширину области панели (без учёта внутренних отступов). В противном случае используется максимальная ширина всех панелей. |
25.2.5.2. Параметры вкладок
Также существуют специфические параметры для вкладок:
Параметр | Описание |
|---|---|
state | «normal», «disabled» или «hidden». Если «disabled», вкладка не выбирается. Если «hidden», вкладка не отображается. |
sticky | Указывает, как дочернее окно размещается в области панели. Значение — строка, содержащая ноль или более символов «n», «s», «e» или «w». Каждый символ относится к стороне (север, юг, восток или запад), к которой дочернее окно будет прикреплено, в соответствии с менеджером геометрии |
padding | Указывает количество дополнительного места, добавляемого между блокнотом и этой панелью. Синтаксис такой же, как и для параметра padding, используемого этим виджетом. |
text | Указывает текст, отображаемый на вкладке. |
image | Указывает изображение для отображения на вкладке. См. параметр image, описанный в |
compound | Указывает, как отобразить изображение относительно текста в случае, если оба параметра text и image присутствуют. См. Параметры Label для допустимых значений. |
underline | Указывает индекс (с нуля) символа, который необходимо подчеркнуть в строке текста. Подчеркнутый символ используется для активации мнемоники, если вызывается |
25.2.5.3. Идентификаторы вкладок
Идентификатор tab_id, присутствующий в нескольких методах ttk.Notebook может иметь любой из следующих форм:
- Целое число от нуля до количества вкладок
- Имя дочернего окна
- Позиционная спецификация в формате «@x,y», которая идентифицирует вкладку
- Литеральная строка «current», которая идентифицирует текущую вкладку
- Литеральная строка «end», которая возвращает количество вкладок (действительна только для
Notebook.index())
25.2.5.4. Виртуальные события
Этот виджет генерирует виртуальное событие <<NotebookTabChanged>> после выбора новой вкладки.
25.2.5.5. 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 — мнемонический (подчеркнутый) символ любой вкладки, выберет эту вкладку.
Несколько книжек в одном главном окне могут быть включены для перемещения, включая вложенные книжки. Однако перемещение по книжкам работает правильно только в том случае, если все вкладки имеют книжку, в которой они находятся, в качестве родительского элемента.
-
25.2.6. Полоса прогресса
Виджет ttk.Progressbar отображает состояние длительной операции. Он может работать в двух режимах: 1) детерминированный режим, который показывает процент завершения относительно общего объёма работы, и 2) недетерминированный режим, предоставляющий анимированное отображение, чтобы пользователь знал, что работа выполняется.
25.2.6.1. Параметры
Этот виджет принимает следующие специфические параметры:
Параметр | Описание |
|---|---|
orient | Одно из «горизонтально» или «вертикально». Указывает ориентацию полосы прогресса. |
length | Указывает длину длинной оси полосы прогресса (ширину, если горизонтально, высоту, если вертикально). |
mode | Одно из «детерминированно» или «недетерминированно». |
maximum | Число, указывающее максимальное значение. По умолчанию равно 100. |
value | Текущее значение полосы прогресса. В режиме «детерминированно» это представляет объем завершённой работы. В режиме «недетерминированно» оно интерпретируется как модуль maximum; другими словами, полоса прогресса завершает один «цикл», когда её значение увеличивается на maximum. |
variable | Имя, связанное со значением параметра. Если указано, значение полосы прогресса автоматически устанавливается в значение этого имени всякий раз, когда последнее изменяется. |
phase | Только для чтения. Виджет периодически увеличивает значение этого параметра всякий раз, когда его значение больше 0 и, в детерминированном режиме, меньше максимального значения. Этот параметр может использоваться текущей темой для предоставления дополнительных эффектов анимации. |
25.2.6.2. ttk.Progressbar
-
class tkinter.ttk.Progressbar -
-
start(interval=None) -
Начать режим автоматического наращивания: планирует повторяющееся событие таймера, которое вызывает
Progressbar.step()каждые interval миллисекунд. Если опущено, interval по умолчанию составляет 50 миллисекунд.
-
step(amount=None) -
Увеличивает значение полосы прогресса на amount.
amount по умолчанию равно 1.0, если опущено.
-
stop() -
Остановить режим автоматического наращивания: отменить любое повторяющееся событие таймера, инициированное
Progressbar.start()для этой полосы прогресса.
-
25.2.7. Разделитель
Виджет ttk.Separator отображает горизонтальную или вертикальную разделительную линию.
Он не имеет других методов помимо наследуемых от ttk.Widget.
25.2.7.1. Параметры
Этот виджет принимает следующий специфический параметр:
Параметр | Описание |
|---|---|
orient | Одно из «горизонтально» или «вертикально». Указывает ориентацию разделителя. |
25.2.8. Маркер изменения размера
Виджет ttk.Sizegrip (также известный как ящик роста) позволяет пользователю изменять размер содержащего его главного окна, нажав и перетащив маркер.
Этот виджет не имеет специфических параметров и специфических методов, помимо наследуемых от ttk.Widget.
25.2.8.1. Примечания к платформе
- В MacOS X главные окна по умолчанию автоматически включают встроенный маркер изменения размера. Добавление
Sizegripбезопасно, поскольку встроенный маркер просто замаскирует виджет.
25.2.8.2. Ошибки
- Если положение содержащего главного окна задано относительно правой или нижней стороны экрана (например, …), маркер изменения размера
Sizegripне изменит размер окна. - Этот виджет поддерживает только изменение размера в направлении «юго-восток».
25.2.9. Дерево
Виджет ttk.Treeview отображает иерархическое множество элементов. Каждый элемент имеет текстовую метку, необязательное изображение и необязательный список значений данных. Значения данных отображаются в последующих столбцах после метки дерева.
Порядок отображения значений данных можно контролировать, установив параметр виджета displaycolumns. Виджет дерева также может отображать заголовки столбцов. К столбцам можно получить доступ по номеру или символическим именам, указанным в параметре виджета columns. См. Идентификаторы столбцов.
Каждый элемент определяется уникальным именем. Виджет будет генерировать идентификаторы элементов, если они не были предоставлены вызывающим объектом. Существует выделенный корневой элемент, имеющий имя {}. Сам корневой элемент не отображается; его дочерние элементы появляются на верхнем уровне иерархии.
Каждый элемент также имеет список меток, которые можно использовать для привязки событий к отдельным элементам и управления внешним видом элемента.
Виджет Treeview поддерживает горизонтальную и вертикальную прокрутку в соответствии с параметрами, описанными в Параметры прокручиваемых виджетов, и методами Treeview.xview() и Treeview.yview().
25.2.9.1. Параметры
Этот виджет принимает следующие специфические параметры:
Опция | Описание |
|---|---|
columns | Список идентификаторов столбцов, определяющий количество столбцов и их названия. |
displaycolumns | Список идентификаторов столбцов (символьные или целочисленные индексы), определяющий, какие столбцы данных отображаются и в каком порядке, или строка «#all». |
height | Определяет количество строк, которые должны быть видимыми. Примечание: запрашиваемая ширина определяется из суммы ширин столбцов. |
padding | Определяет внутренний отступ для виджета. Отступ — список из до четырёх значений длины. |
selectmode |
Управляет тем, как встроенные привязки классов обрабатывают выбор. Одно из значений «extended», «browse» или «none». Если установлено «extended» (по умолчанию), можно выбрать несколько элементов. Если «browse», выбирается только один элемент за раз. Если «none», выбор не изменяется. Обратите внимание, что код приложения и привязки тегов могут устанавливать выбор по своему усмотрению, независимо от значения этой опции. |
show |
Список, содержащий ноль или более следующих значений, определяющих, какие элементы дерева отображать.
По умолчанию используется «tree headings», т.е. отображаются все элементы. Примечание: Столбец #0 всегда относится к столбцу дерева, даже если show = «tree» не указано. |
25.2.9.2. Опции элементов
Для элементов в командах вставки и виджетов элементов можно указать следующие опции.
Опция | Описание |
|---|---|
text | Текстовая метка для отображения элемента. |
image | Изображение Tk, отображаемое слева от метки. |
values |
Список значений, связанных с элементом. Каждый элемент должен иметь такое же количество значений, как и опция widget columns. Если значений меньше, чем столбцов, оставшиеся значения считаются пустыми. Если значений больше, чем столбцов, дополнительные значения игнорируются. |
open | Значение True/False, указывающее, должны ли отображаться дочерние элементы или скрываться. |
tags | Список тегов, связанных с этим элементом. |
25.2.9.3. Опции тегов
Для тегов можно указать следующие опции:
Опция | Описание |
|---|---|
foreground | Определяет цвет текста. |
background | Определяет цвет фона ячейки или элемента. |
font | Определяет шрифт для отображения текста. |
image | Определяет изображение элемента, если опция image элемента пуста. |
25.2.9.4. Идентификаторы столбцов
Идентификаторы столбцов могут принимать следующие формы:
- Символическое имя из списка опций columns.
- Целое число n, определяющее n-ый столбец данных.
- Строка вида #n, где n — целое число, определяющее n-ый отображаемый столбец.
Примечания:
- Значения опций элемента могут отображаться в другом порядке, чем порядок их хранения.
- Столбец #0 всегда относится к столбцу дерева, даже если show = «tree» не указано.
Номер столбца данных — индекс в списке значений опций элемента; номер отображаемого столбца — номер столбца в дереве, где отображаются значения. Метки дерева отображаются в столбце #0. Если опция displaycolumns не установлена, то столбец данных n отображается в столбце #n+1. Снова, столбец #0 всегда относится к столбцу дерева.
25.2.9.5. Виртуальные события
Виджет Treeview генерирует следующие виртуальные события.
Событие | Описание |
|---|---|
<<TreeviewSelect>> | Генерируется при изменении выбора. |
<<TreeviewOpen>> | Генерируется непосредственно перед установкой фокуса на открытый элемент (open=True). |
<<TreeviewClose>> | Генерируется непосредственно после установки фокуса на закрытый элемент (open=False). |
Методы Treeview.focus() и Treeview.selection() могут использоваться для определения затронутого или затронутых элементов.
25.2.9.6. 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, возвращается значение этой опции. В противном случае опции устанавливаются в соответствующие значения.
Допустимые опции/значения:
-
- id
-
Возвращает имя столбца. Эта опция является только для чтения.
-
- anchor: Одно из стандартных значений выравнивания Tk.
-
Определяет, как текст в этом столбце должен быть выровнен относительно ячейки.
-
- minwidth: ширина
-
Минимальная ширина столбца в пикселях. Виджет treeview не позволит столбцу стать меньше, чем указано в этой опции, когда размер виджета изменяется или пользователь перетаскивает столбец.
-
- stretch: True/False
-
Определяет, должна ли ширина столбца изменяться при изменении размера виджета.
-
- width: ширина
-
Ширина столбца в пикселях.
Для настройки столбца дерева вызовите эту функцию со значением column = “#0”
-
-
delete(*items) -
Удаляет все указанные элементы и все их потомки.
Корневой элемент удалить нельзя.
-
detach(*items) -
Открепляет все указанные элементы от дерева.
Элементы и все их потомки по-прежнему существуют и могут быть повторно вставлены в другое место дерева, но не будут отображаться.
Корневой элемент открепить нельзя.
-
exists(item) -
Возвращает
Trueесли указанный элемент присутствует в дереве.
-
focus(item=None) -
Если указан элемент, устанавливает фокус на элемент. В противном случае возвращает текущий фокусированный элемент или ‘’ если его нет.
-
heading(column, option=None, **kw) -
Запрос или изменение опций заголовка для указанного столбца.
Если kw не указан, возвращает словарь значений опций заголовка. Если указан option, возвращается значение этой опции. В противном случае опции устанавливаются в соответствующие значения.
Допустимые опции/значения:
-
- text: текст
-
Текст для отображения в заголовке столбца.
-
- image: имя_изображения
-
Указывает изображение для отображения справа от заголовка столбца.
-
- anchor: выравнивание
-
Определяет, как текст заголовка должен быть выровнен. Одно из стандартных значений выравнивания Tk.
-
- command: обратный_вызов
-
Обратный вызов, который будет вызван при нажатии на метку заголовка.
Для настройки заголовка столбца дерева вызовите эту функцию со значением column = “#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) -
Запрос или изменение опций указанного элемента.
Если опции не заданы, возвращается словарь опций/значений для элемента. Если указан option, возвращается значение этой опции. В противном случае опции устанавливаются в соответствующие значения, заданные в kw.
-
move(item, parent, index) -
Перемещает элемент в позицию индекс в списке дочерних элементов родителя.
Нельзя перемещать элемент под одним из его потомков. Если индекс меньше или равен нулю, элемент перемещается в начало; если больше или равен количеству дочерних элементов, в конец. Если элемент был откреплен, он повторно прикрепляется.
-
next(item) -
Возвращает идентификатор следующего брата элемента, или ‘’ если элемент является последним ребёнком своего родителя.
-
parent(item) -
Возвращает ID родителя элемента, или ‘’ если элемент находится на верхнем уровне иерархии.
-
prev(item) -
Возвращает идентификатор предыдущего брата элемента, или ‘’ если элемент является первым ребёнком своего родителя.
-
reattach(item, parent, index) -
Псевдоним для
Treeview.move().
-
see(item) -
Обеспечивает видимость элемента.
Устанавливает значение всех предков элемента в опцию open в
True, и прокручивает виджет при необходимости, чтобы элемент находился в видимой части дерева.
-
selection(selop=None, items=None) -
Если selop не указан, возвращает выбранные элементы. В противном случае он будет действовать в соответствии со следующими методами выбора.
Устаревшее с версии 3.6, будет удалено в версии 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) -
Запрос или изменение вертикального положения дерева.
-
25.2.10. Стиль 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()Обратите внимание, что порядок последовательностей (состояния, значение) для параметра важен. Если порядок в параметре foreground изменить на
[('active', 'blue'), ('pressed', 'red')], например, результат будет синим цветом переднего плана, когда виджет находится в активном или нажатом состоянии.
-
lookup(style, option, state=None, default=None) -
Возвращает значение, указанное для option в style.
Если указано state, оно должно быть последовательностью одного или нескольких состояний. Если задан параметр default, он используется в качестве значения по умолчанию в случае, если не найдено значение для параметра.
Чтобы проверить, какой шрифт использует кнопка по умолчанию:
from tkinter import ttk print(ttk.Style().lookup("TButton", "font"))
-
layout(style, layoutspec=None) -
Определите макет виджета для заданного style. Если layoutspec опущено, вернуть спецификацию макета для заданного стиля.
layoutspec, если задан, ожидается, что это список или другой тип последовательности (исключая строки), где каждый элемент — кортеж, первым элементом которого является имя макета, а вторым — формат, описанный в Макеты.
Чтобы понять формат, см. следующий пример (он не предназначен для выполнения какой-либо полезной работы):
from tkinter import ttk import tkinter root = tkinter.Tk() style = ttk.Style() style.layout("TMenubutton", [ ("Menubutton.background", None), ("Menubutton.button", {"children": [("Menubutton.focus", {"children": [("Menubutton.padding", {"children": [("Menubutton.label", {"side": "left", "expand": 1})] })] })] }), ]) mbtn = ttk.Menubutton(text='Text') mbtn.pack() root.mainloop()
-
element_create(elementname, etype, *args, **kw) -
Создайте новый элемент в текущей теме, типа etype, который ожидается, что будет «image», «from» или «vsapi». Последнее доступно только в Tk 8.6a для Windows XP и Vista и здесь не описано.
Если используется «image», args должен содержать имя изображения по умолчанию, за которым следуют пары состояний/значений (это спецификация изображений), а 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>>.
-
25.2.10.1. Макеты
Макет может быть просто None, если он не принимает никаких параметров, или словарем параметров, определяющих, как расположить элемент. Механизм макетов использует упрощенную версию менеджера геометрии pack: учитывая начальную полость, каждому элементу выделяется участок. Допустимые параметры/значения:
-
- side: whichside
-
Указывает, с какой стороны полости поместить элемент; одно из top, right, bottom или left. Если опущено, элемент занимает всю полость.
-
- sticky: nswe
-
Указывает, где элемент размещается внутри выделенного участка.
-
- unit: 0 или 1
-
Если установлено в 1, элемент и все его потомки рассматриваются как один элемент для целей
Widget.identify()и т.д. Используется для таких вещей, как полосы прокрутки с ручками.
-
- children: [sublayout… ]
-
Указывает список элементов, которые следует поместить внутри элемента. Каждый элемент — кортеж (или другой тип последовательности), где первым элементом является имя макета, а остальные — Макет.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.6/library/tkinter.ttk.html