Spec-Zone.ru › Python 3.8

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

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

width

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

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

Параметр

Описание

state

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

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

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

Флаг

Описание

active

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

disabled

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

focus

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

pressed

Виджет нажимается.

selected

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

background

В Windows и macOS есть понятие «активного» или фонового окна. Состояние 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.

Spinbox

Виджет 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>>, когда пользователь нажимает <Вверх>, и виртуальное событие <<Decrement>>, когда пользователь нажимает <Вниз>.

ttk.Spinbox

class tkinter.ttk.Spinbox
get()

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

set(value)

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

Notebook

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

Параметры

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

Параметр

Описание

height

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

padding

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

width

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

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

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

Параметр

Описание

state

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

sticky

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

padding

Задаёт количество дополнительного пространства между notebook и этой панелью. Синтаксис аналогичен параметру 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)

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

Если окно в данный момент управляется notebook, но скрыто, оно восстанавливается в своё прежнее положение.

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

forget(tab_id)

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

hide(tab_id)

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

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

identify(x, y)

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

index(tab_id)

Возвращает числовой индекс вкладки, указанной tab_id, или общее количество вкладок, если tab_id — строка “end”.

insert(pos, child, **kw)

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

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

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

select(tab_id=None)

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

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

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

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

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

tabs()

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

enable_traversal()

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

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

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

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

END_OF_DOCUMENT_MARKER ```

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

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

Параметры

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

Параметр

Описание

orient

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

length

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

mode

Одно из значений «детерминированный» или «недетерминированный».

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

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

Возвращает прямоугольник (относительно окна виджета дерева) заданного элемента в формате (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: ширина

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

  • stretch: True/False

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

  • width: ширина

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

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

delete(*items)

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

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

detach(*items)

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

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

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

exists(item)

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

focus(item=None)

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

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

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

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

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

  • text: текст

    Текст, отображаемый в заголовке столбца.

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

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

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

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

  • command: обратная функция

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

Для настройки заголовка столбца дерева вызовите эту функцию со столбцом = “#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)

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

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

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

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

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

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

move(item, parent, index)

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

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

next(item)

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

parent(item)

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

prev(item)

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

reattach(item, parent, index)

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

see(item)

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

Устанавливает для всех предков элемента параметр открыто в 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)

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

tag_bind(tagname, sequence=None, callback=None)

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

tag_configure(tagname, option=None, **kw)

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

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

tag_has(tagname, item=None)

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

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

xview(*args)

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

yview(*args)

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

Ttk Стиль

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

См. также

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

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

class tkinter.ttk.Style

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

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

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

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

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

from tkinter import ttk
import tkinter

root = tkinter.Tk()

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

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

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

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

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

Пример может сделать это более понятным:

import tkinter
from tkinter import ttk

root = tkinter.Tk()

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

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

root.mainloop()

Обратите внимание, что порядок последовательностей (состояний, значений) для параметра важен. Например, если порядок изменить на [('active', 'blue'), ('pressed', 'red')] в опции 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

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

Если «from» используется в качестве значения etype, 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>>.

Макеты

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

  • side: whichside

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

  • sticky: nswe

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

  • unit: 0 или 1

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

  • children: [sublayout… ]

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

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

Spec-Zone.ru

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