Spec-Zone.ru › Python 2.7

ttk — Tk themed widgets

Модуль ttk предоставляет доступ к набору стилизованных виджетов Tk, который был представлен в Tk 8.5. Если Python не скомпилирован с Tk 8.5, код всё ещё может использовать этот модуль, если Tile установлен. Однако некоторые функции, предоставляемые новым Tk, такие как рендеринг шрифтов с антиалиасингом под X11, прозрачность окон (под X11 вам потребуется композиционный менеджер окон), будут отсутствовать.

Основная идея ttk заключается в разделении, насколько это возможно, кода, реализующего поведение виджета, от кода, реализующего его внешний вид.

См. также

Поддержка стилей виджетов Tk

Документ, который ввёл поддержку стилей для Tk

1. Использование Ttk

Чтобы начать использовать Ttk, импортируйте его модуль:

import ttk

Но код, подобный этому:

from Tkinter import *

может (по желанию) использовать это:

from Tkinter import *
from ttk import *

И затем несколько виджетов ttk (Button, Checkbutton, Entry, Frame, Label, LabelFrame, Menubutton, PanedWindow, Radiobutton, Scale и Scrollbar ) автоматически подставятся вместо виджетов Tk.

Это прямо приносит пользу от использования новых виджетов, давая лучший внешний вид на разных платформах, но имейте в виду, что они не полностью совместимы. Основное отличие состоит в том, что такие параметры виджетов, как «fg», «bg» и другие, связанные со стилизацией виджета, больше не присутствуют в виджетах Ttk. Используйте ttk.Style для достижения той же (или лучшей) стилизации.

См. также

Перевод существующих приложений для использования виджетов Tile

Текст, который в терминах Tcl говорит о различиях, которые обычно встречаются при переходе на новые виджеты.

2. Виджеты Ttk

Ttk поставляется с 17 виджетами, 11 из которых уже существуют в Tkinter: Button, Checkbutton, Entry, Frame, Label, LabelFrame, Menubutton, PanedWindow, Radiobutton, Scale и Scrollbar. 6 новых классов виджетов: Combobox, Notebook, Progressbar, Separator, Sizegrip и Treeview. Все эти классы являются подклассами Widget.

Как уже говорилось, вы заметите изменения во внешнем виде и в коде стилизации. Для демонстрации последнего ниже приведён очень простой пример.

Код 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 или более элементов. Первый элемент - имя изображения по умолчанию. Остальная часть списка - последовательность пар state/value, как определено 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

«Включён», «истина» или «текущее» для элементов, таких как флажки и переключатели.

background

Окна и Mac имеют представление «активного» или фонового окна. Состояние background устанавливается для виджетов в фоновом окне и сбрасывается для тех, что в фоновом окне.

readonly

Виджет не должен допускать изменения пользователем.

alternate

Специфичный для виджета альтернативный формат отображения.

invalid

Значение виджета недействительно.

Указание состояния — это последовательность имён состояний, необязательно с префиксом «!» для обозначения того, что бит выключен.

3.6. ttk.Widget

Помимо методов, описанных ниже, класс ttk.Widget поддерживает методы Tkinter.Widget.cget() и Tkinter.Widget.configure().

class ttk.Widget
identify(x, y)

Возвращает имя элемента в позиции x y, или пустую строку, если точка не находится внутри любого элемента.

x и y — это координаты пикселей, относящиеся к виджету.

instate(statespec, callback=None, *args, **kw)

Проверяет состояние виджета. Если обратный вызов не указан, возвращает True если состояние виджета соответствует statespec и False в противном случае. Если обратный вызов указан, он вызывается с args, если состояние виджета соответствует 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

Указывает, как выравнивается текст внутри виджета. Одно из «слева», «по центру» или «справа».

height

Указывает высоту всплывающего списка, в строках.

postcommand

Сценарий (возможно, зарегистрированный с Misc.register()), который вызывается непосредственно перед отображением значений. Он может указать, какие значения отображать.

state

Одно из «нормальное», «только чтение» или «отключено». В состоянии «только чтение» значение нельзя редактировать напрямую, и пользователь может только выбрать одно из значений из выпадающего списка. В состоянии «нормальное» текстовое поле можно редактировать напрямую. В состоянии «отключено» взаимодействие невозможно.

textvariable

Указывает имя, значение которого связано со значением виджета. Всякий раз, когда изменяется значение, связанное с этим именем, значение виджета обновляется и наоборот. См. Tkinter.StringVar.

values

Указывает список значений для отображения во всплывающем списке.

width

Указывает целое число, обозначающее желаемую ширину окна ввода, в символах среднего размера шрифта виджета.

4.2. Виртуальные события

Виджет combobox генерирует виртуальное событие <<ComboboxSelected>>, когда пользователь выбирает элемент из списка значений.

4.3. ttk.Combobox

class 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

«нормальное», «отключено» или «скрыто». Если «отключено», вкладка недоступна для выбора. Если «скрыто», вкладка не отображается.

sticky

Указывает, как дочернее окно размещается в области панели. Значение — строка, содержащая ноль или более символов «н», «с», «в» или «з». Каждая буква относится к стороне (север, юг, восток или запад), к которой будет прикреплено дочернее окно, как и в менеджере геометрии grid().

padding

Указывает количество дополнительного пространства, добавляемого между записной книжкой и этой панелью. Синтаксис такой же, как для параметра padding, используемого этим виджетом.

text

Указывает текст, который будет отображаться на вкладке.

image

Указывает изображение для отображения на вкладке. См. параметр image, описанный в Widget.

compound

Указывает, как отображать изображение относительно текста в случае, если присутствуют и опции текста, и изображения. См. Параметры метки для допустимых значений.

underline

Указывает индекс (от 0) символа, который нужно подчеркнуть в строке текста. Подчеркнутый символ используется для активации мнемоники, если вызов Notebook.enable_traversal().

5.3. Идентификаторы вкладок

tab_id, присутствующий в нескольких методах ttk.Notebook, может принимать любые из следующих форм:

  • Целое число от нуля до количества вкладок.
  • Имя дочернего окна.
  • Позиционное указание в формате «@x,y», которое идентифицирует вкладку.
  • Буквальная строка «current», которая идентифицирует текущую вкладку.
  • Буквальная строка «end», которая возвращает количество вкладок (только допустимо для Notebook.index()).

5.4. Виртуальные события

Этот виджет генерирует виртуальное событие <<NotebookTabChanged>> после выбора новой вкладки.

5.5. ttk.Notebook

class 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])

Выбирает указанную вкладку 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 отображает статус длительной операции. Он может работать в двух режимах: режим определения отображает процент завершения относительно общего объема работы, и режим неопределённости предоставляет анимированное отображение, чтобы пользователь знал, что происходит некая операция.

6.1. Параметры

Этот виджет принимает следующие специфические параметры:

параметр

описание

orient

Один из «горизонтальный» или «вертикальный». Указывает ориентацию полосы прогресса.

length

Указывает длину длинной оси полосы прогресса (ширина при горизонтальной, высота при вертикальной).

mode

Один из «определённый» или «неопределённый».

maximum

Число, определяющее максимальное значение. По умолчанию 100.

value

Текущее значение полосы прогресса. В режиме «определённый» это представляет собой объем проделанной работы. В режиме «неопределённый» оно интерпретируется как модуль maximum; то есть полоса прогресса завершает один «цикл», когда её значение увеличивается на maximum.

variable

Имя, которое связано со значением параметра. Если указано, значение полосы прогресса автоматически устанавливается на значение этого имени всякий раз, когда последнее изменяется.

phase

Только для чтения. Виджет периодически увеличивает значение этого параметра всякий раз, когда его значение больше 0 и, в режиме определения, меньше maximum. Этот параметр может использоваться текущей темой для предоставления дополнительных эффектов анимации.

6.2. ttk.Progressbar

class ttk.Progressbar
start([interval])

Начать режим автоматического наращивания: планирует повторяющееся событие таймера, которое вызывает Progressbar.step() каждые interval миллисекунд. Если опущено, interval по умолчанию составляет 50 миллисекунд.

step([amount])

Увеличивает значение полосы прогресса на amount.

amount по умолчанию составляет 1,0, если опущено.

stop()

Остановить режим автоматического наращивания: отменить любое повторяющееся событие таймера, инициированное Progressbar.start() для этой полосы прогресса.

7. Разделитель

Виджет ttk.Separator отображает горизонтальную или вертикальную разделительную полосу.

Он не имеет других методов, кроме унаследованных от ttk.Widget.

7.1. Параметры

Этот виджет принимает следующий специфический параметр:

параметр

описание

orient

Один из «горизонтальный» или «вертикальный». Указывает ориентацию разделителя.

8. Sizegrip

Виджет ttk.Sizegrip (также известный как поле увеличения) позволяет пользователю изменять размер содержащего главного окна, нажав и перетащив маркер.

Этот виджет не имеет специфических параметров и специфических методов, кроме унаследованных от ttk.Widget.

8.1. Примечания, специфичные для платформы

  • В macOS главные окна по умолчанию автоматически включают встроенный маркер изменения размера. Добавление 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. Параметры элементов

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

параметр

описание

text

Текстовая метка для отображения элемента.

image

Изображение Tk, отображаемое слева от метки.

values

Список значений, связанных с элементом.

Каждый элемент должен иметь одинаковое количество значений, как столбцов опций виджета. Если значений меньше, чем столбцов, оставшиеся значения считаются пустыми. Если значений больше, чем столбцов, дополнительные значения игнорируются.

open

Значение True/False, указывающее, должны ли отображаться дочерние элементы элемента или скрываться.

tags

Список тегов, связанных с этим элементом.

9.3. Параметры тегов

Следующие параметры могут быть заданы для тегов:

параметр

описание

foreground

Устанавливает цвет текста.

background

Устанавливает цвет фона ячейки или элемента.

font

Устанавливает шрифт для вывода текста.

image

Устанавливает изображение элемента, в случае, если параметр image элемента пустой.

9.4. Идентификаторы столбцов

Идентификаторы столбцов могут принимать следующие формы:

  • Символическое имя из списка параметров столбцов.
  • Целое число 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 ttk.Treeview
bbox(item, column=None)

Возвращает прямоугольник (относительно окна виджета treeview) указанного элемента в формате (x, y, ширина, высота).

Если указан столбец, возвращает прямоугольник ячейки. Если элемент не виден (например, является потомком закрытого элемента или находится вне области видимости из-за прокрутки), возвращает пустую строку.

get_children([item])

Возвращает список дочерних элементов, принадлежащих элементу.

Если элемент не указан, возвращает дочерние элементы корневого элемента.

set_children(item, *newchildren)

Заменяет дочерние элементы элемента на newchildren.

Дочерние элементы, присутствующие в элементе, но отсутствующие в newchildren, отсоединяются от дерева. Ни один из элементов в newchildren не может быть предком элемента. Обратите внимание, что если newchildren не указано, дочерние элементы элемента отсоединяются.

column(column, option=None, **kw)

Запрос или изменение параметров указанного столбца.

Если kw не указано, возвращает словарь значений параметров столбца. Если указан параметр, возвращается значение этого параметра. В противном случае параметры устанавливаются соответствующими значениями.

Допустимые параметры/значения:

  • 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 не указан, возвращает словарь значений параметров заголовка. Если указан параметр, возвращается значение этого параметра. В противном случае параметры устанавливаются соответствующими значениями.

Допустимые параметры/значения:

  • 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)

Создаёт новый элемент и возвращает идентификатор созданного элемента.

родитель — идентификатор родительского элемента или пустая строка для создания нового элемента верхнего уровня. индекс — целое число или значение «конец», определяющее место в списке дочерних элементов родителя для вставки нового элемента. Если индекс меньше или равен нулю, новый узел вставляется в начало; если индекс больше или равен текущему количеству дочерних элементов, он вставляется в конец. Если указан iid, он используется как идентификатор элемента; iid не должен уже существовать в дереве. В противном случае генерируется новый уникальный идентификатор.

См. Параметры элементов для списка доступных пунктов.

item(item[, option[, **kw]])

Запрос или изменение параметров указанного элемента.

Если параметры не указаны, возвращается словарь с параметрами/значениями для элемента. Если указан параметр, возвращается значение этого параметра. В противном случае параметры устанавливаются соответствующими значениями, указанными в kw.

move(item, parent, index)

Перемещает элемент в позицию индекс в списке дочерних элементов родителя.

Нельзя перемещать элемент под один из его потомков. Если индекс меньше или равен нулю, элемент перемещается в начало; если больше или равен количеству дочерних элементов, он перемещается в конец. Если элемент был отсоединён, он прикрепляется снова.

next(item)

Возвращает идентификатор следующего элемента-потомка элемента, или ‘’ если элемент является последним потомком родителя.

parent(item)

Возвращает ID родителя элемента, или ‘’ если элемент находится на верхнем уровне иерархии.

prev(item)

Возвращает идентификатор предыдущего элемента-потомка элемента, или ‘’ если элемент является первым потомком родителя.

reattach(item, parent, index)

Псевдоним для Treeview.move().

see(item)

Обеспечивает видимость элемента.

Устанавливает параметр открыто всех предков элемента в значение True, и при необходимости прокручивает виджет так, чтобы элемент находился в видимой части дерева.

selection([selop=None[, items=None]])

Если selop не указан, возвращает выделенные элементы. В противном случае он будет действовать в соответствии с приведенными методами выбора.

selection_set(items)

элементы становятся новым выделением.

selection_add(items)

Добавляет элементы в выделение.

selection_remove(items)

Удаляет элементы из выделения.

selection_toggle(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. Если указан параметр, возвращается значение этого параметра для указанного tagname. В противном случае параметры устанавливаются соответствующими значениями для данного tagname.

tag_has(tagname[, item])

Если указан элемент, возвращает 1 или 0 в зависимости от наличия у указанного элемента заданного tagname. В противном случае возвращает список всех элементов, имеющих указанный тег.

Доступность: Tk 8.6

xview(*args)

Запрос или изменение горизонтального положения treeview.

yview(*args)

Запрос или изменение вертикальной позиции дерева.

10. Ttk Стиль

Каждый виджет в ttk назначается стилю, который определяет набор элементов, составляющих виджет, и как они расположены, а также динамические и стандартные настройки для параметров элементов. По умолчанию имя стиля совпадает с именем класса виджета, но может быть переопределено параметром стиля виджета. Если имя класса виджета неизвестно, используйте метод Misc.winfo_class() (somewidget.winfo_class()).

См. также

Презентация конференции Tcl’2004

Этот документ объясняет, как работает движок темы

class ttk.Style

Этот класс используется для управления базой данных стилей.

configure(style, query_opt=None, **kw)

Запрос или установка значения по умолчанию указанного(ых) параметра(ов) в style.

Каждый ключ в kw является параметром, а каждое значение — строка, идентифицирующая значение этого параметра.

Например, чтобы изменить все кнопки по умолчанию на плоские кнопки с некоторым отступом и другим цветом фона, выполните:

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
import ttk

root = Tkinter.Tk()

style = ttk.Style()
style.map("C.TButton",
    foreground=[('pressed', 'red'), ('active', 'blue')],
    background=[('pressed', '!disabled', 'black'), ('active', 'white')]
    )

colored_btn = ttk.Button(text="Test", style="C.TButton").pack()

root.mainloop()

Обратите внимание, что порядок последовательностей (состояние, значение) для параметра имеет значение. В предыдущем примере, если вы измените порядок на [('active', 'blue'), ('pressed', 'red')] в параметре foreground, например, вы получите синий цвет переднего плана, когда виджет находится в активном или нажатом состоянии.

lookup(style, option, state=None, default=None)

Возвращает значение, указанное для option в style.

Если указано state, ожидается, что это последовательность из одного или нескольких состояний. Если параметр default задан, он используется в качестве значения по умолчанию в случае, если спецификация для параметра не найдена.

Чтобы проверить, какой шрифт используется по умолчанию для кнопки, выполните:

import ttk

print ttk.Style().lookup("TButton", "font")
layout(style, layoutspec=None)

Определить макет виджета для заданного style. Если layoutspec опущено, возвращает спецификацию макета для заданного стиля.

layoutspec, если указано, ожидается, что это список или какой-либо другой тип последовательности (кроме строк), где каждый элемент должен быть кортежем, а первый элемент — имя макета, а второй элемент должен иметь формат, описанный в Макеты.

Чтобы понять формат, см. следующий пример (он не предназначен для выполнения какой-либо полезной работы):

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 для темы по умолчанию:

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])

Если 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/2.7/library/ttk.html

Spec-Zone.ru

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