Spec-Zone.ru › Python 3.5

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.

Обычно этот параметр состоит из метода Scrollbar.set() какой-либо полосы прокрутки. Это заставит полосу прокрутки обновляться всякий раз, когда область видимости в окне изменяется.

yscrollcommand Используется для связи с вертикальными полосами прокрутки. Для получения дополнительной информации см. выше.

3.3. Параметры метки

Следующие параметры поддерживаются метками, кнопками и другими похожими на кнопку виджетами.

Параметр Описание
text Указывает строку текста, которая должна отображаться внутри виджета.
textvariable Указывает имя, значение которого будет использоваться вместо параметра text.
underline Если установлено, указывает индекс (с нуля) символа, который следует подчеркнуть в строке текста. Подчеркнутый символ используется для активации мнемоники.
image Указывает изображение для отображения. Это список из 1 или более элементов. Первый элемент — имя изображения по умолчанию. Остальная часть списка — это последовательность пар «состояние/значение», как определено в Style.map(), определяющая разные изображения для использования, когда виджет находится в определённом состоянии или комбинации состояний. Все изображения в списке должны иметь одинаковый размер.
compound

Указывает, как отобразить изображение относительно текста в случае наличия как параметра текста, так и изображения. Допустимые значения:

  • text: отобразить только текст
  • image: отобразить только изображение
  • top, bottom, left, right: отобразить изображение сверху, снизу, слева или справа от текста соответственно.
  • none: по умолчанию. отобразить изображение, если оно присутствует, в противном случае текст.
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: отображать метки дерева в столбце #0.
  • headings: отображать строку заголовков.

По умолчанию «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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API