Spec-Zone.ru › Python 3.7

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/значение, как определено в 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 и 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

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

height

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

postcommand

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

state

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

textvariable

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

values

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

width

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

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

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

ttk.Комбобокс

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

ttk.Поле со списком

class tkinter.ttk.Spinbox
get()

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

set(value)

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

Книжка

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

Параметры

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

Параметр

Описание

height

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

padding

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

width

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

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

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

Параметр

Описание

state

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

sticky

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

padding

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

text

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

image

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

compound

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

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

tabs()

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

enable_traversal()

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

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

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

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

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

Виджет 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” не указан.

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

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

Параметр

Описание

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)

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

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

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

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

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

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

move(item, parent, index)

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

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

next(item)

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

parent(item)

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

prev(item)

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

reattach(item, parent, index)

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

see(item)

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

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

selection(selop=None, items=None)

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

Устарело начиная с версии 3.6, будет удалено в версии 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)

Привязывает обработчик события заданной последовательности к тегу 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 — это параметр, а каждое значение должно быть списком или кортежем (обычно) содержащим state-spec, сгруппированные в кортежи, списки или с какой-либо другой предпочитаемой структурой. State-spec — это совокупность одного или нескольких состояний, а затем значения.

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

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 должен содержать имя изображения по умолчанию, за которым следуют пары state-spec/значение (это imagespec), а kw может иметь следующие параметры:

  • border=padding

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

  • height=height

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

  • padding=padding

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

  • sticky=spec

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

  • width=width

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

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

element_names()

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

element_options(elementname)

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

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

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

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

theme_settings(themename, settings)

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

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

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

from tkinter import ttk
import tkinter

root = tkinter.Tk()

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

combo = ttk.Combobox().pack()

root.mainloop()
theme_names()

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

theme_use(themename=None)

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

Макеты

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

  • side: whichside

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

  • sticky: nswe

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

  • unit: 0 или 1

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

  • children: [sublayout… ]

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

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

Spec-Zone.ru

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