Spec-Zone.ru › Python 3.12

tkinter.ttk — Tk оформленные виджеты

Исходный код: Lib/tkinter/ttk.py

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

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

См. также

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

Документ, вводящий поддержку оформления для Tk

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

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

from tkinter import ttk

Чтобы переопределить базовые виджеты Tk, импорт должен следовать за импортом Tk:

from tkinter import *
from tkinter.ttk import *

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

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

См. также

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

Монография (использующая терминологию Tcl) о различиях, обычно встречающихся при переходе приложений на использование новых виджетов.

Виджеты Ttk

Ttk поставляется с 18 виджетами, 12 из которых уже существовали в tkinter: Button, Checkbutton, Entry, Frame, Label, LabelFrame, Menubutton, PanedWindow, Radiobutton, Scale, Scrollbar, и Spinbox. Шесть других являются новыми: Combobox, Notebook, Progressbar, Separator, Sizegrip и Treeview. И все они являются подклассами Widget.

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

Код Tk:

l1 = tkinter.Label(text="Test", fg="black", bg="white")
l2 = tkinter.Label(text="Test", fg="black", bg="white")

Код Ttk:

style = ttk.Style()
style.configure("BW.TLabel", foreground="black", background="white")

l1 = ttk.Label(text="Test", style="BW.TLabel")
l2 = ttk.Label(text="Test", style="BW.TLabel")

Для получения дополнительной информации об TtkStyling, см. документацию класса Style.

Виджет

ttk.Widget определяет стандартные параметры и методы, поддерживаемые виджетами с темой Tk, и не должен быть непосредственно инстанцирован.

Стандартные параметры

Все виджеты ttk поддерживают следующие параметры:

Параметр

Описание

class

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

cursor

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

takefocus

Определяет, принимает ли окно фокус при перемещении по клавиатуре. Возвращает 0, 1 или пустую строку. Если возвращается 0, это означает, что окно должно быть пропущено при перемещении по клавиатуре. Если 1, это означает, что окно должно получить фокус ввода, пока оно отображается. Пустая строка означает, что скрипты перемещения по клавиатуре принимают решение о том, фокусироваться на окне или нет.

style

Может быть использован для задания пользовательского стиля виджета.

Параметры виджетов со скроллингом

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

Параметр

Описание

xscrollcommand

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

Когда область просмотра в окне виджета изменяется, виджет генерирует Tcl команду на основе scrollcommand.

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

yscrollcommand

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

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

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

Параметр

Описание

text

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

textvariable

Указывает имя, значение которого будет использоваться вместо ресурса параметра text.

underline

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

image

Указывает изображение для отображения. Это список из 1 или более элементов. Первый элемент — имя изображения по умолчанию. Остальная часть списка — последовательность пар state/value, как определено в Style.map(), указывающих разные изображения для использования, когда виджет находится в определенном состоянии или комбинации состояний. Все изображения в списке должны иметь одинаковый размер.

compound

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

  • text: отображается только текст
  • image: отображается только изображение
  • top, bottom, left, right: изображение отображается над, под, слева от или справа от текста соответственно.
  • none: значение по умолчанию. Отображается изображение, если оно присутствует, в противном случае — текст.

width

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

Параметры совместимости

Параметр

Описание

state

Может быть установлен в «normal» или «disabled» для управления флагом «disabled». Это параметр только для записи: его установка изменяет состояние виджета, но метод Widget.state() на него не влияет.

Состояния виджетов

Состояние виджета — это битовая карта независимых флагов состояния.

Флаг

Описание

active

Курсор мыши находится над виджетом, и нажатие кнопки мыши вызовет какое-то действие

disabled

Виджет отключен под управлением программы

focus

Виджет имеет фокус клавиатуры

pressed

Виджет нажат

selected

«Включено», «истина» или «текущее» для таких элементов, как Checkbuttons и radiobuttons

background

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

readonly

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

alternate

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

invalid

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

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

ttk.Widget

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

class tkinter.ttk.Widget
identify(x, y)

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

x и y — координаты пикселей относительно виджета.

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

Проверяет состояние виджета. Если обратный вызов не задан, возвращает True , если состояние виджета соответствует statespec, и False в противном случае. Если указан обратный вызов, он вызывается с аргументами, если состояние виджета соответствует statespec.

state(statespec=None)

Изменяет или запрашивает состояние виджета. Если statespec задан, устанавливает состояние виджета в соответствии с ним и возвращает новое statespec, указывающее, какие флаги были изменены. Если statespec не задан, возвращает текущие включённые флаги состояния.

statespec обычно будет списком или кортежем.

Комбобокс

Виджет ttk.Combobox объединяет текстовое поле с выпадающим списком значений. Этот виджет является подклассом Entry.

Помимо методов, унаследованных от Widget: Widget.cget(), Widget.configure(), Widget.identify(), Widget.instate() и Widget.state(), и следующих, унаследованных от Entry: Entry.bbox(), Entry.delete(), Entry.icursor(), Entry.index(), Entry.insert(), Entry.selection(), Entry.xview(), он имеет другие методы, описанные в ttk.Combobox.

Параметры

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

Параметр

Описание

exportselection

Булево значение. Если установлено, выделение виджета связано с выделением менеджера окон (которое может быть возвращено вызовом Misc.selection_get, например).

justify

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

height

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

postcommand

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

state

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

textvariable

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

values

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

width

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

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

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

ttk.Combobox

class tkinter.ttk.Combobox
current(newindex=None)

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

get()

Возвращает текущее значение combobox.

set(value)

Устанавливает значение combobox в value.

Спинбокс

Виджет ttk.Spinbox представляет собой виджет ttk.Entry, дополненный стрелками для увеличения и уменьшения. Он может использоваться для чисел или списков строковых значений. Этот виджет является подклассом Entry.

Помимо методов, унаследованных от Widget: Widget.cget(), Widget.configure(), Widget.identify(), Widget.instate() и Widget.state(), и следующих, унаследованных от Entry: Entry.bbox(), Entry.delete(), Entry.icursor(), Entry.index(), Entry.insert(), Entry.xview(), он имеет другие методы, описанные в ttk.Spinbox.

Параметры

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

Параметр

Описание

from

Число с плавающей точкой. Если установлено, это минимальное значение, до которого кнопка уменьшения будет уменьшать значение. Должно быть написано как from_ при использовании в качестве аргумента, так как from является ключевым словом Python.

to

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

increment

Число с плавающей точкой. Указывает величину, на которую кнопки увеличения/уменьшения изменяют значение. По умолчанию 1.0.

values

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

wrap

Булево значение. Если True, кнопки увеличения и уменьшения будут циклически переходить от to значения к from значению или от from значения к to значению, соответственно.

format

Строковое значение. Это задаёт формат чисел, установленных кнопками увеличения/уменьшения. Он должен иметь вид «%W.Pf», где W — ширина значения с заполнением, P — точность, а «%» и «f» — литералы.

command

Вызываемый объект Python. Будет вызываться без аргументов всякий раз, когда нажимаются кнопки увеличения или уменьшения.

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

Виджет spinbox генерирует виртуальное событие <<Increment>>, когда пользователь нажимает <Up>, и виртуальное событие <<Decrement>>, когда пользователь нажимает <Down>.

ttk.Spinbox

class tkinter.ttk.Spinbox
get()

Возвращает текущее значение spinbox.

set(value)

Устанавливает значение spinbox в value.

END_OF_DOCUMENT_MARKER

Блокнот

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

Параметры

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

Параметр

Описание

height

Если задан и больше нуля, задаёт желаемую высоту области панели (без учёта внутренних отступов или вкладок). В противном случае используется максимальная высота всех панелей.

padding

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

width

Если задан и больше нуля, задаёт желаемую ширину области панели (без учёта внутренних отступов). В противном случае используется максимальная ширина всех панелей.

Параметры вкладок

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

Параметр

Описание

state

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

sticky

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

padding

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

text

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

image

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

compound

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

underline

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

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

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

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

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

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

ttk.Notebook

class tkinter.ttk.Notebook
add(child, **kw)

Добавляет новую вкладку в блокнот.

Если окно в данный момент управляется блокнотом, но скрыто, оно восстанавливается в предыдущей позиции.

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

forget(tab_id)

Удаляет вкладку, указанную параметром tab_id, отключает и снимает с управления связанное окно.

hide(tab_id)

Скрывает вкладку, указанную параметром tab_id.

Вкладка не будет отображаться, но связанное окно остаётся управляемым блокнотом, и его конфигурация запоминается. Скрытые вкладки могут быть восстановлены с помощью команды add().

identify(x, y)

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

index(tab_id)

Возвращает числовой индекс вкладки, указанной параметром tab_id, или общее количество вкладок, если tab_id является строкой «end».

insert(pos, child, **kw)

Вставляет панель в указанную позицию.

pos может быть строкой «end», целым индексом или именем управляемого дочернего элемента. Если child уже управляется блокнотом, он перемещается в указанную позицию.

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

select(tab_id=None)

Выбирает указанный tab_id.

Связанное дочернее окно будет отображаться, а ранее выбранное окно (если оно отличается) — отключаться. Если tab_id опущен, возвращается имя виджета текущей выбранной панели.

tab(tab_id, option=None, **kw)

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

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

tabs()

Возвращает список окон, управляемых блокнотом.

enable_traversal()

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

Это добавит следующие сочетания клавиш для главного окна, содержащего блокнот:

  • Ctrl-Tab: выбирает вкладку, следующую за текущей.
  • Shift-Ctrl-Tab: выбирает вкладку, предшествующую текущей.
  • Alt-K: где K — мнемоническая (подчеркнутая) клавиша любой вкладки, выберет эту вкладку.

Несколько блокнотов в одном главном окне могут быть включены для навигации, включая вложенные блокноты. Однако навигация по блокнотам работает правильно только в том случае, если все панели имеют блокнот, в котором они находятся, в качестве родителя.

Полоса прогресса

Виджет ttk.Progressbar отображает статус длительной операции. Он может работать в двух режимах: 1) детерминированный режим, отображающий процент выполнения по отношению к общему объёму работы, и 2) недетерминированный режим, предоставляющий анимированный дисплей, чтобы сообщить пользователю о ходе работы.

Параметры

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

Параметр

Описание

orient

Одно из значений «horizontal» или «vertical». Задает ориентацию полосы прогресса.

length

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

mode

Одно из значений «determinate» или «indeterminate».

maximum

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

value

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

variable

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

phase

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

ttk.Progressbar

class tkinter.ttk.Progressbar
start(interval=None)

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

step(amount=None)

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

amount по умолчанию равно 1.0, если опущено.

stop()

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

Разделитель

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

У него нет других методов помимо унаследованных от ttk.Widget.

Параметры

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

Параметр

Описание

orient

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

Маркер изменения размера

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

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

Примечания, зависящие от платформы

  • В macOS окна-контейнеры по умолчанию автоматически включают встроенный маркер изменения размера. Добавление Sizegrip не повлияет на работу, так как встроенный маркер просто замаскирует виджет.

Ошибки

  • Если положение содержащего окна-контейнера задано относительно правой или нижней границы экрана (например, …), виджет Sizegrip не сможет изменить размер окна.
  • Этот виджет поддерживает только изменение размера в направлении “юго-восток”.

Дерево

Виджет ttk.Treeview отображает иерархическую коллекцию элементов. Каждый элемент имеет текстовую метку, необязательное изображение и необязательный список значений данных. Значения данных отображаются в последующих столбцах после метки дерева.

Порядок отображения значений данных может быть изменён с помощью параметра виджета displaycolumns. Виджет дерева также может отображать заголовки столбцов. Доступ к столбцам можно получить по номеру или символическому имени, указанному в параметре виджета columns. См. Идентификаторы столбцов.

Каждый элемент идентифицируется уникальным именем. Виджет будет генерировать идентификаторы элементов, если они не были предоставлены вызывающей стороной. Существует выделенный корневой элемент с именем {}. Сам корневой элемент не отображается; его дочерние элементы отображаются на верхнем уровне иерархии.

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

Виджет Treeview поддерживает горизонтальную и вертикальную прокрутку в соответствии с параметрами, описанными в Параметры прокручиваемых виджетов, и методами Treeview.xview() и Treeview.yview().

Параметры

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

Параметр

Описание

columns

Список идентификаторов столбцов, определяющий количество столбцов и их имена.

displaycolumns

Список идентификаторов столбцов (символические или целочисленные индексы), определяющих, какие столбцы данных отображаются и в каком порядке, или строка “#all”.

height

Определяет количество отображаемых строк. Примечание: запрошенная ширина определяется суммой ширины столбцов.

padding

Определяет внутренний отступ виджета. Отступ — это список из четырёх спецификаций длины, максимум.

selectmode

Управляет тем, как встроенные привязки класса управляют выбором. Одно из значений “extended”, “browse” или “none”. Если установлено “extended” (по умолчанию), можно выбрать несколько элементов. Если “browse”, одновременно выбирается только один элемент. Если “none”, выбор не изменяется.

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

show

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

  • tree: отображать метки дерева в столбце #0.
  • headings: отображать строку заголовков.

По умолчанию установлено “tree headings”, т.е. отображаются все элементы.

Примечание: Столбец #0 всегда относится к столбцу дерева, даже если show=”tree” не указан.

Параметры элементов

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

Параметр

Описание

text

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

image

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

values

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

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

open

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

tags

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

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

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

Параметр

Описание

foreground

Указывает цвет текста переднего плана.

background

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

font

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

image

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

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

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

  • Символическое имя из списка параметра columns.
  • Целое число n, указывающее на n-й столбец данных.
  • Строка вида #n, где n — целое число, указывающее на n-й отображаемый столбец.

Примечания:

  • Значения параметров элементов могут отображаться в другом порядке, чем порядок их хранения.
  • Столбец #0 всегда относится к столбцу дерева, даже если show=”tree” не указан.

Номер столбца данных — это индекс в списке значений параметров элемента; номер отображаемого столбца — это номер столбца в дереве, где отображаются значения. Метки дерева отображаются в столбце #0. Если параметр displaycolumns не задан, то столбец данных n отображается в столбце #n+1. Опять же, столбец #0 всегда относится к столбцу дерева.

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

Виджет Treeview генерирует следующие виртуальные события.

Событие

Описание

<<TreeviewSelect>>

Генерируется при изменении выбора.

<<TreeviewOpen>>

Генерируется перед установкой фокуса элемента на open=True.

<<TreeviewClose>>

Генерируется после установки фокуса элемента на open=False.

Методы Treeview.focus() и Treeview.selection() могут использоваться для определения затронутого или затронутых элементов.

ttk.Treeview

class tkinter.ttk.Treeview
bbox(item, column=None)

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

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

get_children(item=None)

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

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

set_children(item, *newchildren)

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

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

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

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

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

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

id

Возвращает имя столбца. Этот параметр является только для чтения.

anchor: Одно из стандартных значений выравнивания Tk.

Определяет, как текст в этом столбце должен быть выровнен относительно ячейки.

minwidth: ширина

Минимальная ширина столбца в пикселях. Виджет treeview не уменьшит столбец меньше, чем указано этим параметром, при изменении размера виджета или при перетаскивании столбца пользователем.

stretch: True/False

Определяет, должна ли ширина столбца изменяться при изменении размера виджета.

width: ширина

Ширина столбца в пикселях.

Для настройки столбца дерева вызовите этот метод со значением column = “#0”

delete(*items)

Удаляет все указанные элементы и все их потомки.

Корневой элемент удалить нельзя.

detach(*items)

Отсоединяет все указанные элементы от дерева.

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

Корневой элемент отсоединить нельзя.

exists(item)

Возвращает True, если указанный элемент присутствует в дереве.

focus(item=None)

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

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

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

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

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

text: текст

Текст для отображения в заголовке столбца.

image: имя_изображения

Указывает изображение для отображения справа от заголовка столбца.

anchor: выравнивание

Определяет, как выровнять текст заголовка. Одно из стандартных значений выравнивания Tk.

command: обработчик

Обработчик, который вызывается при нажатии на метку заголовка.

Для настройки заголовка столбца дерева вызовите этот метод со значением column = “#0”.

identify(component, x, y)

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

identify_row(y)

Возвращает идентификатор элемента в позиции y.

identify_column(x)

Возвращает идентификатор столбца данных ячейки в позиции x.

Столбец дерева имеет идентификатор #0.

identify_region(x, y)

Возвращает одно из следующих значений:

область

значение

заголовок

Область заголовка дерева.

разделитель

Пространство между двумя заголовками столбцов.

дерево

Область дерева.

ячейка

Ячейка данных.

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

identify_element(x, y)

Возвращает элемент в позиции x, y.

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

index(item)

Возвращает целочисленный индекс элемента в списке дочерних элементов родительского элемента.

insert(parent, index, iid=None, **kw)

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

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

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

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

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

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

move(item, parent, index)

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

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

next(item)

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

parent(item)

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

prev(item)

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

reattach(item, parent, index)

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

see(item)

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

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

selection()

Возвращает кортеж выбранных элементов.

Изменено в версии 3.8: selection() больше не принимает аргументы. Для изменения состояния выбора используйте следующие методы выбора.

selection_set(*items)

items становится новым выбором.

Изменено в версии 3.6: items могут быть переданы как отдельные аргументы, а не только как один кортеж.

selection_add(*items)

Добавляет items в выбор.

Изменено в версии 3.6: items могут быть переданы как отдельные аргументы, а не только как один кортеж.

selection_remove(*items)

Удаляет items из выбора.

Изменено в версии 3.6: items могут быть переданы как отдельные аргументы, а не только как один кортеж.

selection_toggle(*items)

Переключить состояние выделения каждого элемента в items.

Изменено в версии 3.6: items можно передать в виде отдельных аргументов, а не только как один кортеж.

set(item, column=None, value=None)

С одним аргументом возвращает словарь пар «колонка/значение» для указанного элемента item. С двумя аргументами возвращает текущее значение указанной колонки. С тремя аргументами устанавливает значение заданной колонки в заданном элементе item на указанное значение.

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

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

xview(*args)

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

yview(*args)

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

Ttk Стиль

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

См. также

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

В этом документе объясняется, как работает механизм темы.

class tkinter.ttk.Style

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

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

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

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

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

from tkinter import ttk
import tkinter

root = tkinter.Tk()

ttk.Style().configure("TButton", padding=6, relief="flat",
   background="#ccc")

btn = ttk.Button(text="Sample")
btn.pack()

root.mainloop()
map(style, query_opt=None, **kw)

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

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

Пример поможет понять:

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, который должен быть либо «изображение», либо «from».

Если используется «изображение», args должен содержать имя изображения по умолчанию, за которым следуют пары «состояние/значение» (это imagespec), а kw может иметь следующие параметры:

border=padding

padding — это список до четырех целых чисел, задающих левые, верхние, правые и нижние границы соответственно.

height=height

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

padding=padding

Устанавливает внутренний отступ элемента. По умолчанию, если не указано, равно значению border.

sticky=spec

Указывает, как изображение размещается внутри конечного участка. spec содержит ноль или более символов «n», «s», «w» или «e».

width=width

Устанавливает минимальную ширину элемента. Если меньше нуля, используется ширина базового изображения по умолчанию.

Пример:

img1 = tkinter.PhotoImage(master=root, file='button.png')
img1 = tkinter.PhotoImage(master=root, file='button-pressed.png')
img1 = tkinter.PhotoImage(master=root, file='button-active.png')
style = ttk.Style(root)
style.element_create('Button.button', 'image',
                     img1, ('pressed', img2), ('active', img3),
                     border=(2, 4), sticky='we')

Если «from» используется в качестве значения etype, element_create() клонирует существующий элемент. args ожидается, что содержит имя темы, из которой будет клонироваться элемент, и необязательно элемент для клонирования. Если этот элемент для клонирования не указан, используется пустой элемент. kw игнорируется.

Пример:

style = ttk.Style(root)
style.element_create('plain.background', 'from', 'default')
element_names()

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

element_options(elementname)

Возвращает список параметров elementname.

theme_create(themename, parent=None, settings=None)

Создает новую тему.

Возникает ошибка, если themename уже существует. Если parent указан, новая тема будет унаследовать стили, элементы и макеты от родительской темы. Если settings присутствуют, они должны иметь тот же синтаксис, что и для theme_settings().

theme_settings(themename, settings)

Временная установка текущей темы на themename, применение заданных settings и последующее восстановление предыдущей темы.

Каждый ключ в settings — это стиль, а каждое значение может содержать ключи «configure», «map», «layout» и «element create», и они должны иметь тот же формат, что и в методах Style.configure(), Style.map(), Style.layout() и Style.element_create() соответственно.

В качестве примера, давайте немного изменим Combobox для темы по умолчанию:

from tkinter import ttk
import tkinter

root = tkinter.Tk()

style = ttk.Style()
style.theme_settings("default", {
   "TCombobox": {
       "configure": {"padding": 5},
       "map": {
           "background": [("active", "green2"),
                          ("!disabled", "green4")],
           "fieldbackground": [("!disabled", "green3")],
           "foreground": [("focus", "OliveDrab1"),
                          ("!disabled", "OliveDrab2")]
       }
   }
})

combo = ttk.Combobox().pack()

root.mainloop()
theme_names()

Возвращает список всех известных тем.

theme_use(themename=None)

Если themename не задано, возвращает используемую тему. В противном случае устанавливает текущую тему на themename, обновляет все виджеты и генерирует событие <<ThemeChanged>>.

Макеты

Макет может быть просто None, если он не требует опций, или словарем опций, определяющих, как расположить элемент. Механизм макетов использует упрощенную версию менеджера геометрии pack: задан начальный объем, и каждый элемент выделяет себе участок.

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

side: whichside

Указывает сторону объема, где разместить элемент; одна из top, right, bottom или left. Если опущен, элемент занимает весь объем.

sticky: nswe

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

unit: 0 или 1

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

children: [sublayout… ]

Указывает список элементов для размещения внутри элемента. Каждый элемент — это кортеж (или другой тип последовательности), где первый элемент — имя макета, а другие — Макет.

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/library/tkinter.ttk.html

Spec-Zone.ru

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