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
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) о различиях, которые обычно встречаются при переносе приложений на использование новых виджетов.
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.
3. Виджет
ttk.Widget определяет стандартные параметры и методы, поддерживаемые оформленными виджетами Tk, и не предполагается для прямого создания экземпляров.
3.1. Стандартные параметры
Все виджеты ttk принимают следующие параметры:
| Параметр | Описание |
|---|---|
| class | Указывает класс окна. Класс используется при запросе опций окна в базе данных опций, для определения стандартных bindtags для окна и для выбора стандартной компоновки и стиля виджета. Этот параметр является только для чтения и может быть указан только при создании окна. |
| cursor | Указывает курсор мыши, который будет использоваться для виджета. Если задано пустую строку (по умолчанию), курсор наследуется от родительского виджета. |
| takefocus | Определяет, принимает ли окно фокус во время перемещения по клавиатуре. Возвращает 0, 1 или пустую строку. Если возвращается 0, это означает, что окно должно быть полностью пропущено во время перемещения по клавиатуре. Если 1, это означает, что окно должно получить фокус ввода, пока оно отображается. И пустая строка означает, что скрипты перемещения принимают решение о том, фокусироваться ли на окне или нет. |
| style | Может быть использован для указания настраиваемого стиля виджета. |
3.2. Параметры прокручиваемых виджетов
Следующие параметры поддерживаются виджетами, которые управляются полосой прокрутки.
| Параметр | Описание |
|---|---|
| xscrollcommand |
Используется для связи с горизонтальными полосами прокрутки. Когда область видимости в окне виджета изменяется, виджет генерирует Tcl-команду, основанную на scrollcommand. Обычно этот параметр состоит из метода |
| yscrollcommand | Используется для связи с вертикальными полосами прокрутки. Для получения дополнительной информации см. выше. |
3.3. Параметры метки
Следующие параметры поддерживаются метками, кнопками и другими похожими на кнопку виджетами.
| Параметр | Описание |
|---|---|
| text | Указывает строку текста, которая должна отображаться внутри виджета. |
| textvariable | Указывает имя, значение которого будет использоваться вместо параметра text. |
| underline | Если установлено, указывает индекс (с нуля) символа, который следует подчеркнуть в строке текста. Подчеркнутый символ используется для активации мнемоники. |
| image | Указывает изображение для отображения. Это список из 1 или более элементов. Первый элемент — имя изображения по умолчанию. Остальная часть списка — это последовательность пар «состояние/значение», как определено в Style.map(), определяющая разные изображения для использования, когда виджет находится в определённом состоянии или комбинации состояний. Все изображения в списке должны иметь одинаковый размер. |
| compound |
Указывает, как отобразить изображение относительно текста в случае наличия как параметра текста, так и изображения. Допустимые значения:
|
| width | Если больше нуля, указывает, сколько места в ширине символов выделить для метки текста; если меньше нуля, указывает минимальную ширину. Если ноль или не указано, используется естественная ширина метки текста. |
3.4. Параметры совместимости
| Параметр | Описание |
|---|---|
| state | Может быть установлен в «normal» или «disabled», чтобы управлять битом состояния «disabled». Это параметр только для записи: установка его изменяет состояние виджета, но метод Widget.state() не влияет на этот параметр. |
3.5. Состояния виджета
Состояние виджета — это битовая карта независимых флагов состояния.
| Флаг | Описание |
|---|---|
| active | Курсор мыши находится над виджетом, и нажатие кнопки мыши вызовет какое-то действие |
| disabled | Виджет отключен по управлению программы |
| focus | Виджет имеет фокус клавиатуры |
| pressed | Виджет нажимается |
| selected | «Включено», «истина» или «текущее» для элементов, таких как Checkbuttons и radiobuttons |
| background | Окна и Mac имеют представление об «активном» или фоновом окне. Состояние background устанавливается для виджетов в фоновом окне и сбрасывается для тех, которые находятся в переднем окне |
| readonly | Виджет не должен допускать изменения пользователем |
| alternate | Специфичный для виджета альтернативный формат отображения |
| invalid | Значение виджета неверно |
Спецификация состояния — это последовательность имён состояний, необязательно префикс «!» указывающий, что бит выключен.
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 обычно будет списком или кортежем.
-
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.
4.1. Параметры
Этот виджет принимает следующие специфические параметры:
| Параметр | Описание |
|---|---|
| exportselection | Булево значение. Если установлено, выделение виджета связано с выделением окна менеджера (которое можно получить, вызвав Misc.selection_get, например). |
| justify | Определяет, как текст выравнивается внутри виджета. Одно из “left”, “center” или “right”. |
| height | Определяет высоту раскрывающегося списка, в строках. |
| postcommand | Скрипт (возможно, зарегистрированный с помощью Misc.register), который вызывается непосредственно перед отображением значений. Он может указывать, какие значения отобразить. |
| state | Одно из “normal”, “readonly” или “disabled”. В состоянии “readonly” значение нельзя редактировать напрямую, и пользователь может только выбрать значения из раскрывающегося списка. В состоянии “normal” текстовое поле можно редактировать напрямую. В состоянии “disabled” взаимодействие невозможно. |
| textvariable | Указывает имя, значение которого связано со значением виджета. Всякий раз, когда изменяется значение, связанное с этим именем, значение виджета обновляется, и наоборот. См. tkinter.StringVar. |
| values | Определяет список значений для отображения в раскрывающемся списке. |
| width | Указывает целое число, определяющее желаемую ширину окна ввода, в среднем размере символов шрифта виджета. |
4.2. Виртуальные события
Виджет combobox генерирует виртуальное событие <<ComboboxSelected>>, когда пользователь выбирает элемент из списка значений.
4.3. ttk.Combobox
-
class tkinter.ttk.Combobox -
-
current(newindex=None) -
Если newindex указан, устанавливает значение combobox в позицию элемента newindex. В противном случае возвращает индекс текущего значения или -1, если текущее значение отсутствует в списке значений.
-
get() -
Возвращает текущее значение combobox.
-
set(value) -
Устанавливает значение combobox в value.
-
5. Notebook
Виджет ttk Notebook управляет набором окон и отображает только одно окно за раз. Каждое дочернее окно связано с вкладкой, которую пользователь может выбрать для изменения отображаемого окна.
5.1. Параметры
Этот виджет принимает следующие специфические параметры:
| Параметр | Описание |
|---|---|
| height | Если присутствует и больше нуля, задаёт желаемую высоту области панели (без учёта внутренних отступов или вкладок). В противном случае используется максимальная высота всех панелей. |
| padding | Указывает количество дополнительного пространства, добавляемого вокруг внешней стороны блокнота. Отступ — это список из четырёх значений, указывающих отступы слева, сверху, справа и снизу. Если указано меньше четырёх элементов, нижнее значение по умолчанию равно верхнему, правое — левому, а верхнее — левому. |
| width | Если присутствует и больше нуля, задаёт желаемую ширину области панели (без учёта внутренних отступов). В противном случае используется максимальная ширина всех панелей. |
5.2. Параметры вкладок
Также существуют специфические параметры для вкладок:
| Параметр | Описание |
|---|---|
| state | «normal», «disabled» или «hidden». Если «disabled», вкладка не выбирается. Если «hidden», вкладка не отображается. |
| sticky | Указывает, как дочернее окно размещается в области панели. Значение — строка, содержащая ноль или более символов «n», «s», «e» или «w». Каждый символ относится к стороне (север, юг, восток или запад), к которой дочернее окно будет прикреплено, в соответствии с менеджером геометрии grid(). |
| padding | Указывает количество дополнительного пространства, добавляемого между блокнотом и этой панелью. Синтаксис такой же, как и для параметра padding, используемого этим виджетом. |
| text | Указывает текст, который будет отображаться на вкладке. |
| image | Указывает изображение для отображения на вкладке. См. параметр image, описанный в Widget. |
| compound | Указывает, как отображать изображение относительно текста, если присутствуют оба параметра text и image. См. Параметры Label для допустимых значений. |
| underline | Указывает индекс (с нуля) символа, который следует подчеркнуть в строке текста. Подчеркнутый символ используется для активации мнемоники, если вызвана Notebook.enable_traversal(). |
5.3. Идентификаторы вкладок
Идентификатор tab_id, присутствующий в нескольких методах ttk.Notebook, может принимать следующие формы:
- Целое число от нуля до числа вкладок
- Имя дочернего окна
- Позиционное указание в формате «@x,y», которое идентифицирует вкладку
- Литеральная строка «current», которая идентифицирует текущую вкладку
- Литеральная строка «end», которая возвращает количество вкладок (только для
Notebook.index())
5.4. Виртуальные события
Этот виджет генерирует виртуальное событие <<NotebookTabChanged>> после выбора новой вкладки.
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 — мнемонический (подчеркнутый) символ любой вкладки, выберет эту вкладку.
Несколько блокнотов в одном главном окне могут быть включены для прохода, включая вложенные блокноты. Однако проход по блокноту работает правильно только в том случае, если все панели имеют блокнот, в котором они находятся, в качестве родительского.
-
6. Progressbar
Виджет ttk.Progressbar отображает состояние длительной операции. Он может работать в двух режимах: 1) детерминированном, который показывает процент выполнения относительно общего объёма работы, и 2) недетерминированном, который обеспечивает анимацию, чтобы пользователь знал, что работа выполняется.
6.1. Параметры
Этот виджет принимает следующие специфические параметры:
| Параметр | Описание |
|---|---|
| orient | Одно из значений «горизонталь» или «вертикаль». Указывает ориентацию полосы прогресса. |
| length | Указывает длину длинной оси полосы прогресса (ширину, если горизонтальная, высоту, если вертикальная). |
| mode | Одно из значений «определённая» или «неопределённая». |
| maximum | Числовое значение, определяющее максимальное значение. По умолчанию 100. |
| value | Текущее значение полосы прогресса. В режиме «определённая» оно представляет собой количество завершённой работы. В режиме «неопределённая» оно интерпретируется как остаток от деления на maximum; то есть, полоса прогресса завершает один «цикл», когда её значение увеличивается на maximum. |
| variable | Имя, связанное со значением параметра. Если указано, значение полосы прогресса автоматически устанавливается на значение этого имени всякий раз, когда последнее изменяется. |
| phase | Только для чтения. Виджет периодически увеличивает значение этого параметра, когда его значение больше 0 и, в режиме «определённая», меньше maximum. Этот параметр может использоваться текущей темой для предоставления дополнительных эффектов анимации. |
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()для этой полосы прогресса.
-
7. Разделитель
Виджет ttk.Separator отображает горизонтальную или вертикальную разделительную линию.
Он не имеет других методов помимо унаследованных от ttk.Widget.
7.1. Параметры
Этот виджет принимает следующие специфичные параметры:
| Параметр | Описание |
|---|---|
| orient | Одно из значений «горизонталь» или «вертикаль». Указывает ориентацию разделителя. |
8. Маркер размера
Виджет ttk.Sizegrip (также известный как поле изменения размера) позволяет пользователю изменять размер содержащего его окна верхнего уровня, нажав и перетащив маркер.
Этот виджет не имеет специфических параметров или методов, кроме унаследованных от ttk.Widget.
8.1. Замечания, специфичные для платформы
- В MacOS X окна верхнего уровня автоматически включают встроенный маркер изменения размера по умолчанию. Добавление
Sizegripбезопасно, так как встроенный маркер просто замаскирует виджет.
8.2. Ошибки
- Если положение содержащегося окна верхнего уровня задано относительно правой или нижней границы экрана (например, …), виджет
Sizegripне изменит размер окна. - Этот виджет поддерживает только изменение размера в направлении «юго-восток».
9. Treeview
Виджет ttk.Treeview отображает иерархическую коллекцию элементов. Каждый элемент имеет текстовую метку, необязательное изображение и необязательный список значений данных. Значения данных отображаются в последовательных столбцах после метки дерева.
Порядок отображения значений данных может контролироваться настройкой параметра виджета displaycolumns. Виджет дерева также может отображать заголовки столбцов. К столбцам можно получить доступ по номеру или символическим именам, перечисленным в параметре виджета columns. См. Идентификаторы столбцов.
Каждый элемент идентифицируется уникальным именем. Виджет будет генерировать идентификаторы элементов, если они не были предоставлены вызывающей стороной. Существует выделенный корневой элемент, имеющий имя {}. Сам корневой элемент не отображается; его потомки появляются на верхнем уровне иерархии.
Каждый элемент также имеет список тегов, которые могут использоваться для ассоциации привязок событий с отдельными элементами и управления внешним видом элемента.
Виджет Treeview поддерживает горизонтальное и вертикальное прокручивание в соответствии с параметрами, описанными в Параметры прокручиваемого виджета и методами Treeview.xview() и Treeview.yview().
9.1. Параметры
Этот виджет принимает следующие специфичные параметры:
| Параметр | Описание |
|---|---|
| columns | Список идентификаторов столбцов, определяющий количество столбцов и их имена. |
| displaycolumns | Список идентификаторов столбцов (символических или целочисленных индексов), указывающий, какие столбцы данных отображаются и в каком порядке, или строка «#all». |
| height | Указывает количество видимых строк. Примечание: требуемая ширина определяется по сумме ширины столбцов. |
| padding | Указывает внутренний отступ виджета. Отступ — список из до четырёх спецификаций длин. |
| selectmode |
Управляет тем, как встроенные привязки класса обрабатывают выделение. Одно из значений «extended», «browse» или «none». Если установлено «extended» (по умолчанию), можно выбрать несколько элементов. Если «browse», одновременно будет выбран только один элемент. Если «none», выделение не будет изменено. Обратите внимание, что код приложения и привязки тегов могут устанавливать выделение по своему усмотрению, независимо от значения этого параметра. |
| show |
Список, содержащий ноль или более из следующих значений, указывающих, какие элементы дерева отображать.
По умолчанию «tree headings», т.е. отображать все элементы. Примечание: Столбец #0 всегда относится к столбцу дерева, даже если show=”tree” не указан. |
9.2. Параметры элементов
Следующие параметры элементов могут быть заданы для элементов в командах insert и item.
| Параметр | Описание |
|---|---|
| text | Текстовая метка для отображения элемента. |
| image | Изображение Tk, отображаемое слева от метки. |
| values |
Список значений, связанных с элементом. Каждый элемент должен иметь то же количество значений, что и параметр виджета columns. Если значений меньше, чем столбцов, оставшиеся значения считаются пустыми. Если значений больше, чем столбцов, дополнительные значения игнорируются. |
| open | Значение True/False, указывающее, должны ли отображаться потомки элемента или скрыты. |
| tags | Список тегов, связанных с этим элементом. |
9.3. Параметры тегов
Следующие параметры могут быть заданы для тегов:
| Параметр | Описание |
|---|---|
| foreground | Устанавливает цвет текста переднего плана. |
| background | Устанавливает цвет фона ячейки или элемента. |
| font | Указывает шрифт для отображения текста. |
| image | Указывает изображение элемента, в случае если параметр image элемента пуст. |
9.4. Идентификаторы столбцов
Идентификаторы столбцов могут принимать следующие формы:
- Символическое имя из списка параметров columns.
- Целое число n, определяющее n-й столбец данных.
- Строка вида #n, где n — целое число, определяющее n-й отображаемый столбец.
Примечания:
- Значения параметров элемента могут быть отображены в другом порядке, чем порядок, в котором они хранятся.
- Столбец #0 всегда относится к столбцу дерева, даже если show=”tree” не указан.
Номер столбца данных — это индекс в списке значений параметров элемента; номер отображаемого столбца — это номер столбца в дереве, где отображаются значения. Метки дерева отображаются в столбце #0. Если параметр displaycolumns не задан, то столбец данных n отображается в столбце #n+1. Опять же, столбец #0 всегда относится к столбцу дерева.
9.5. Виртуальные события
Виджет Treeview генерирует следующие виртуальные события.
| Событие | Описание |
|---|---|
| <<TreeviewSelect>> | Генерируется при изменении выделения. |
| <<TreeviewOpen>> | Генерируется незадолго до установки фокуса элемента open=True. |
| <<TreeviewClose>> | Генерируется сразу после установки фокуса элемента open=False. |
Методы Treeview.focus() и Treeview.selection() могут быть использованы для определения затронутого элемента или элементов.
9.6. ttk.Treeview
-
class tkinter.ttk.Treeview -
-
bbox(item, column=None) -
Возвращает прямоугольник (относительно окна виджета treeview) указанного элемента item в виде (x, y, ширина, высота).
Если указан параметр column, возвращает прямоугольник ячейки. Если элемент item не виден (например, если он является потомком закрытого элемента или находится вне области видимости из-за прокрутки), возвращает пустую строку.
-
get_children(item=None) -
Возвращает список потомков, принадлежащих элементу item.
Если item не указан, возвращает потомков корневого элемента.
-
set_children(item, *newchildren) -
Заменяет потомков элемента item на newchildren.
Потомки item, отсутствующие в newchildren, отсоединяются от дерева. Элементы из newchildren не могут быть предками элемента item. Если newchildren не указаны, потомки элемента item отсоединяются.
-
column(column, option=None, **kw) -
Запрос или изменение параметров указанного столбца column.
Если kw не указан, возвращает словарь значений параметров столбца. Если задан option, возвращается значение этого option. В противном случае параметры устанавливаются на соответствующие значения.
Допустимые параметры/значения:
-
- id
- Возвращает имя столбца. Это параметр только для чтения.
-
- anchor: одно из стандартных значений выравнивания Tk.
- Определяет выравнивание текста в столбце относительно ячейки.
-
- minwidth: ширина
- Минимальная ширина столбца в пикселях. Виджет treeview не уменьшит столбец ниже значения этого параметра при изменении размера виджета или при перетаскивании пользователем столбца.
-
- stretch: True/False
- Указывает, нужно ли изменять ширину столбца при изменении размера виджета.
-
- width: ширина
- Ширина столбца в пикселях.
Для настройки столбца дерева вызовите этот метод со значением column = “#0”
-
-
delete(*items) -
Удаляет все указанные элементы items и всех их потомков.
Корневой элемент удалить нельзя.
-
detach(*items) -
Отсоединяет все указанные элементы items от дерева.
Элементы и все их потомки всё ещё существуют и могут быть повторно вставлены в другое место дерева, но не будут отображаться.
Корневой элемент отсоединить нельзя.
-
exists(item) -
Возвращает
True, если указанный элемент item присутствует в дереве.
-
focus(item=None) -
Если item указан, устанавливает фокус на item. В противном случае возвращает текущий элемент с фокусом или ‘’ если такового нет.
-
heading(column, option=None, **kw) -
Запрос или изменение параметров заголовка указанного столбца column.
Если kw не указан, возвращает словарь значений параметров заголовка. Если указан option, возвращается значение этого option. В противном случае параметры устанавливаются на соответствующие значения.
Допустимые параметры/значения:
-
- text: текст
- Текст, отображаемый в заголовке столбца.
-
- image: имя_изображения
- Указывает изображение, отображаемое справа от заголовка столбца.
-
- anchor: выравнивание
- Определяет выравнивание текста в заголовке. Одно из стандартных значений выравнивания Tk.
-
- command: функция_обратного_вызова
- Функция обратного вызова, которая будет вызвана при нажатии на метку заголовка.
Для настройки заголовка столбца дерева вызовите этот метод со значением column = “#0”.
-
-
identify(component, x, y) -
Возвращает описание указанного компонента component под точкой с координатами 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) -
Возвращает целочисленный индекс элемента item в списке потомков его родителя.
-
insert(parent, index, iid=None, **kw) -
Создает новый элемент и возвращает идентификатор созданного элемента.
parent — идентификатор родительского элемента, или пустая строка для создания нового корневого элемента. index — целое число или значение “end”, определяющее позицию в списке потомков родителя для вставки нового элемента. Если index меньше или равно нулю, новый узел вставляется в начало; если index больше или равно текущему числу потомков, он вставляется в конец. Если задан iid, он используется в качестве идентификатора элемента; iid не должен уже существовать в дереве. В противном случае генерируется новый уникальный идентификатор.
См. Параметры элемента для списка доступных значений.
-
item(item, option=None, **kw) -
Запрос или изменение параметров указанного элемента item.
Если параметры не заданы, возвращается словарь с параметрами/значениями элемента. Если задан option, возвращается значение этого параметра. В противном случае параметры устанавливаются на соответствующие значения, заданные в kw.
-
move(item, parent, index) -
Перемещает элемент item в позицию index в списке потомков parent.
Нельзя перемещать элемент под один из своих потомков. Если index меньше или равно нулю, элемент item перемещается в начало; если больше или равно числу потомков, то в конец. Если элемент item был отсоединён, он прикрепляется снова.
-
next(item) -
Возвращает идентификатор следующего элемента-потомка item, или ‘’ если item является последним потомком родителя.
-
parent(item) -
Возвращает идентификатор родителя элемента item, или ‘’ если item находится на верхнем уровне иерархии.
-
prev(item) -
Возвращает идентификатор предыдущего элемента-потомка item, или ‘’ если item является первым потомком родителя.
-
reattach(item, parent, index) -
Псевдоним для
Treeview.move().
-
see(item) -
Обеспечивает отображение элемента item.
Устанавливает параметр open всех предков item в значение
True, и прокручивает виджет при необходимости, так чтобы элемент item был в области видимости дерева.
-
selection(selop=None, items=None) -
Если selop не указан, возвращает выбранные элементы. В противном случае, он действует в соответствии со следующими методами выбора.
-
selection_set(items) -
items становится новым набором выделенных элементов.
-
selection_add(items) -
Добавляет элементы items в выделение.
-
selection_remove(items) -
Удаляет элементы items из выделения.
-
selection_toggle(items) -
Переключает состояние выбора каждого элемента в 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) -
Запрос или изменение вертикального положения дерева.
-
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 — это опция, а каждое значение должно быть списком или кортежем (обычно) содержащим statespecs, сгруппированные в кортежи, списки или по другим предпочтениям. Statespec — это комбинация одного или нескольких состояний, а затем значения.
Пример поможет лучше понять:
import tkinter from tkinter import ttk root = tkinter.Tk() style = ttk.Style() style.map("C.TButton", foreground=[('pressed', 'red'), ('active', 'blue')], background=[('pressed', '!disabled', 'black'), ('active', 'white')] ) colored_btn = ttk.Button(text="Test", style="C.TButton").pack() root.mainloop()Обратите внимание, что порядок последовательностей (состояние, значение) для опции важен. Если порядок изменится на
[('active', 'blue'), ('pressed', 'red')]в опции foreground, например, результатом будет синий цвет 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>>».
-
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.5/library/tkinter.ttk.html