Spec-Zone.ru › Python 3.14

tkinter — интерфейс Python к Tcl/Tk

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

Пакет tkinter («интерфейс Tk») — это стандартный интерфейс Python к GUI-инструментарию Tcl/Tk. И Tk, и tkinter доступны на большинстве платформ Unix, включая macOS, а также в системах Windows.

Запуск python -m tkinter из командной строки должен открыть окно с демонстрацией простого интерфейса Tk. Это позволит убедиться, что tkinter правильно установлена в системе, а также узнать версию установленной Tcl/Tk, чтобы обратиться к документации Tcl/Tk для этой версии.

Tkinter поддерживает различные версии Tcl/Tk, собранные как с поддержкой потоков, так и без неё. Минимальная поддерживаемая версия — Tcl/Tk 8.5.12; официальные бинарные выпуски Python включают Tcl/Tk 8.6. Дополнительную информацию о поддерживаемых версиях см. в исходном коде модуля _tkinter.

Изменено в версии 3.11: Поддержка версий Tcl/Tk старше 8.5.12 была удалена.

Tkinter — не тонкая оболочка: в него добавлено немало собственной логики, чтобы сделать работу с ним более привычной для Python. В этой документации основное внимание уделяется этим дополнениям и изменениям; за подробностями, которые остались без изменений, обращайтесь к официальной документации Tcl/Tk.

Примечание

В Tcl/Tk 8.5 (2007) появился современный набор тематических компонентов пользовательского интерфейса, а также новый API для работы с ними (см. tkinter.ttk). Оба API — старый и новый — по-прежнему доступны. В большинстве документов, которые можно найти в интернете, используется старый API, и они могут быть сильно устаревшими.

Это необязательный модуль. Если он отсутствует в вашей сборке CPython, обратитесь к документации вашего дистрибутива (то есть того, кто предоставил вам Python). Если вы являетесь поставщиком дистрибутива, см. раздел Требования к необязательным модулям.

См. также

  • TkDocs

    Подробное руководство по созданию пользовательских интерфейсов с помощью Tkinter. В нём объясняются основные понятия и демонстрируются рекомендуемые подходы с использованием современного API.

  • Справочник Tkinter 8.5: GUI для Python

    Справочная документация по Tkinter 8.5 с описанием доступных классов, методов и параметров.

Ресурсы по Tcl/Tk:

  • Команды Tk

    Подробный справочник по каждой из базовых команд Tcl/Tk, используемых Tkinter.

  • Главная страница Tcl/Tk

    Дополнительная документация и ссылки на разработку ядра Tcl/Tk.

Книги:

  • Современный Tkinter для занятых разработчиков на Python

    Автор — Mark Roseman. (ISBN 978-1999149567)

  • Разработка GUI на Python с помощью Tkinter

    Автор — Alan D. Moore. (ISBN 978-1788835886)

  • Программирование на Python

    Автор — Mark Lutz; книга содержит превосходное описание Tkinter. (ISBN 978-0596158101)

  • Tcl и инструментарий Tk (2-е издание)

    Авторы — John Ousterhout, создатель Tcl/Tk, и Ken Jones; Tkinter в книге не рассматривается. (ISBN 978-0321336330)

Архитектура

Tcl/Tk — это не одна библиотека, а несколько отдельных модулей, каждый из которых выполняет свои функции и имеет собственную официальную документацию. В бинарные выпуски Python также включён дополнительный модуль.

Tcl

Tcl — динамический интерпретируемый язык программирования, подобно Python. Хотя его можно использовать самостоятельно как язык программирования общего назначения, чаще всего его встраивают в приложения на C в качестве скриптового движка или интерфейса к инструментарию Tk. Библиотека Tcl предоставляет интерфейс C для создания и управления одним или несколькими экземплярами интерпретатора Tcl, выполнения команд и скриптов Tcl в этих экземплярах, а также добавления пользовательских команд, реализованных на Tcl или C. У каждого интерпретатора есть очередь событий и средства для отправки и обработки событий. В отличие от Python, модель выполнения Tcl основана на кооперативной многозадачности; Tkinter устраняет это различие (подробности см. в разделе Модель потоков).

Tk

Tk — это пакет Tcl, реализованный на C и добавляющий пользовательские команды для создания и управления виджетами GUI. Каждый объект Tk содержит собственный экземпляр интерпретатора Tcl с загруженным Tk. Виджеты Tk допускают широкую настройку, однако их внешний вид кажется устаревшим. Tk использует очередь событий Tcl для создания и обработки событий GUI.

Ttk

Themed Tk (Ttk) — это более новое семейство виджетов Tk, внешний вид которых на разных платформах значительно лучше, чем у многих классических виджетов Tk. Начиная с версии Tk 8.5, Ttk входит в состав Tk. Привязки для Python доступны в отдельном модуле tkinter.ttk.

Внутри Tk и Ttk используют средства базовой операционной системы: Xlib в Unix/X11, Cocoa в macOS и GDI в Windows.

Когда приложение Python использует класс Tkinter, например для создания виджета, модуль tkinter сначала формирует строку команды Tcl/Tk. Затем эта строка команды Tcl передаётся внутреннему бинарному модулю _tkinter, который вызывает интерпретатор Tcl для её выполнения. После этого интерпретатор Tcl обращается к пакетам Tk и/или Ttk, которые, в свою очередь, вызывают Xlib, Cocoa или GDI.

Модули Tkinter

Поддержка Tkinter распределена между несколькими модулями. Большинству приложений понадобятся основной модуль tkinter, а также модуль tkinter.ttk, предоставляющий современный набор тематических виджетов и API:

from tkinter import *
from tkinter import ttk

К модулям, обеспечивающим поддержку Tk, относятся:

tkinter

Основной модуль Tkinter.

tkinter.colorchooser

Диалоговое окно для выбора цвета пользователем.

tkinter.commondialog

Базовый класс для диалоговых окон, определённых в других перечисленных здесь модулях.

tkinter.filedialog

Стандартные диалоговые окна, позволяющие пользователю указать файл для открытия или сохранения.

tkinter.font

Вспомогательные средства для работы со шрифтами.

tkinter.messagebox

Доступ к стандартным диалоговым окнам Tk.

tkinter.scrolledtext

Текстовый виджет со встроенной вертикальной полосой прокрутки.

tkinter.simpledialog

Простые диалоговые окна и удобные функции.

tkinter.ttk

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

Дополнительные модули:

_tkinter

Бинарный модуль, содержащий низкоуровневый интерфейс к Tcl/Tk. Он автоматически импортируется основным модулем tkinter и не должен напрямую использоваться разработчиками приложений. Обычно это разделяемая библиотека (или DLL), но в некоторых случаях она может быть статически скомпонована с интерпретатором Python.

idlelib

Интегрированная среда разработки и обучения Python (IDLE). Основана на tkinter.

tkinter.constants

Символьные константы, которые можно использовать вместо строк при передаче различных параметров вызовам Tkinter. Автоматически импортируются основным модулем tkinter.

tkinter.dnd

(экспериментальный) Поддержка перетаскивания для tkinter. Эта возможность устареет после замены на Tk DND.

turtle

Черепашья графика в окне Tk.

Краткое руководство по Tkinter

Этот раздел не предназначен для исчерпывающего изучения Tk или Tkinter. Для этого обратитесь к одному из внешних ресурсов, перечисленных выше. Вместо этого здесь кратко рассматривается, как выглядит приложение Tkinter, описываются основные концепции Tk и объясняется устройство оболочки Tkinter.

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

Программа Hello World

Начнём с разбора приложения «Hello World» на Tkinter. Это не самая короткая программа из возможных, но в ней достаточно кода, чтобы показать некоторые важные понятия, которые необходимо знать.

from tkinter import *
from tkinter import ttk
root = Tk()
frm = ttk.Frame(root, padding=10)
frm.grid()
ttk.Label(frm, text="Hello World!").grid(column=0, row=0)
ttk.Button(frm, text="Quit", command=root.destroy).grid(column=1, row=0)
root.mainloop()

После импортов следующая строка создаёт экземпляр класса Tk, который инициализирует Tk и создаёт связанный с ним интерпретатор Tcl. Также создаётся окно верхнего уровня, называемое корневым окном; оно служит главным окном приложения.

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

Следующая строка создаёт виджет-метку со статической текстовой строкой. Метод grid() задаёт относительное расположение метки внутри содержащего её виджета-контейнера — подобно тому, как это работает в таблицах HTML.

Затем создаётся виджет-кнопка и размещается справа от метки. При нажатии кнопка вызовет метод destroy() корневого окна.

Наконец, метод mainloop() отображает всё на экране и обрабатывает действия пользователя до завершения программы.

Важные концепции Tk

Даже эта простая программа иллюстрирует следующие ключевые концепции Tk:

виджеты

Пользовательский интерфейс Tkinter состоит из отдельных виджетов. Каждый виджет представлен объектом Python, созданным на основе таких классов, как ttk.Frame, ttk.Label и ttk.Button.

иерархия виджетов

Виджеты располагаются в виде иерархии. Метка и кнопка находились внутри контейнера, который, в свою очередь, находился внутри корневого окна. При создании каждого дочернего виджета его родительский виджет передаётся первым аргументом конструктору виджета.

параметры настройки

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

управление геометрией

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

цикл обработки событий

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

Как Tkinter оборачивает Tcl/Tk

Когда приложение использует классы и методы Tkinter, внутри Tkinter формируются строки, представляющие команды Tcl/Tk, и эти команды выполняются в интерпретаторе Tcl, связанном с экземпляром Tk приложения.

При поиске в справочной документации, подходящего метода или параметра, адаптации существующего кода или отладке приложения Tkinter может быть полезно понять, как выглядят лежащие в основе команды Tcl/Tk.

Для иллюстрации приведём эквивалент основной части приведённого выше скрипта Tkinter на Tcl/Tk.

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0

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

  • Команды создания виджетов (например, ttk::frame) соответствуют классам виджетов в Tkinter.
  • Параметры виджетов Tcl (например, -text) соответствуют именованным аргументам в Tkinter.
  • В Tcl виджеты обозначаются путевым именем (например, .frm.btn), тогда как Tkinter использует не имена, а ссылки на объекты.
  • Положение виджета в иерархии кодируется в его (иерархическом) путевом имени, в котором в качестве разделителя пути используется . (точка). Путевое имя корневого окна — просто . (точка). В Tkinter иерархия задаётся не путевыми именами, а указанием родительского виджета при создании каждого дочернего виджета.
  • Операции, реализованные в Tcl как отдельные команды (например, grid или destroy), представлены в Tkinter как методы объектов-виджетов. Как вы вскоре увидите, иногда Tcl использует конструкции, похожие на вызовы методов объектов-виджетов и более близкие к используемым в Tkinter.

Как сделать…? Что делает параметр…?

Если вы не знаете, как что-либо сделать в Tkinter, и не можете сразу найти ответ в используемом руководстве или справочной документации, вам могут помочь несколько приёмов.

Прежде всего помните, что особенности работы отдельных виджетов могут различаться в разных версиях Tkinter и Tcl/Tk. Если вы ищете документацию, убедитесь, что она соответствует установленным в системе версиям Python и Tcl/Tk.

При поиске информации об использовании API полезно знать точное имя используемого класса, параметра или метода. Интроспекция, выполняемая в интерактивной оболочке Python или с помощью print(), поможет определить, что именно вам нужно.

Чтобы узнать, какие параметры настройки доступны у виджета, вызовите его метод configure(). Он возвращает словарь с различными сведениями о каждом объекте, включая значения по умолчанию и текущие значения. Чтобы получить только имена параметров, используйте keys().

btn = ttk.Button(frm, ...)
print(btn.configure().keys())

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

print(set(btn.configure().keys()) - set(frm.configure().keys()))

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

print(dir(btn))
print(set(dir(btn)) - set(dir(frm)))

Работа со справочным руководством Tcl/Tk

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

Хотя в Tkinter все операции реализованы как вызовы методов объектов-виджетов, вы уже видели, что многие операции Tcl/Tk выглядят как команды, первым параметром которых является путевое имя виджета, за которым следуют необязательные параметры, например

destroy .
grid .frm.btn -column 0 -row 0

Другие, однако, больше похожи на методы, вызываемые у объекта-виджета (на самом деле при создании виджета в Tcl/Tk создаётся команда Tcl с именем, совпадающим с путевым именем виджета, а первым параметром этой команды становится имя вызываемого метода).

.frm.btn invoke
.frm.lbl configure -text "Goodbye"

В официальной справочной документации Tcl/Tk большинство операций, похожих на вызовы методов, описаны на странице man конкретного виджета (например, метод invoke() описан на странице man ttk::button), тогда как для функций, принимающих виджет в качестве параметра, часто предусмотрена отдельная страница man (например, grid).

Многие распространённые параметры и методы описаны на страницах man options или ttk::widget, а другие — на странице man конкретного класса виджетов.

Вы также заметите, что многие методы Tkinter имеют составные имена, например winfo_x(), winfo_height(), winfo_viewable(). Документацию по всем этим методам можно найти на странице man winfo.

Примечание

Несколько сбивает с толку то, что у всех виджетов Tkinter есть и методы, которые на самом деле не работают с самим виджетом, а действуют глобально, независимо от какого-либо виджета. Примеры — методы доступа к буферу обмена или системному сигналу. (Они реализованы как методы базового класса Widget, от которого наследуются все виджеты Tkinter.)

Модель потоков

Модели потоков Python и Tcl/Tk сильно различаются, и tkinter пытается устранить эти различия. Если вы используете потоки, следует учитывать это.

С интерпретатором Python может быть связано множество потоков. В Tcl можно создавать несколько потоков, но с каждым потоком связан отдельный экземпляр интерпретатора Tcl. Потоки могут создавать более одного экземпляра интерпретатора, однако каждый экземпляр интерпретатора может использоваться только создавшим его потоком.

Каждый объект Tk, созданный с помощью tkinter, содержит интерпретатор Tcl. Он также отслеживает, какой поток создал этот интерпретатор. Вызовы tkinter можно выполнять из любого потока Python. Если вызов поступает из потока, отличного от того, который создал объект Tk, внутри интерпретатора в очередь событий помещается событие; после его обработки результат возвращается вызвавшему потоку Python.

Приложения Tcl/Tk обычно управляются событиями: после инициализации интерпретатор запускает цикл обработки событий (то есть Tk.mainloop) и реагирует на события. Поскольку он однопоточный, обработчики событий должны быстро завершаться, иначе они будут блокировать обработку других событий. Чтобы этого избежать, длительные вычисления не следует выполнять в обработчике событий: их нужно либо разбивать на небольшие части с помощью таймеров, либо выполнять в другом потоке. Это отличается от многих GUI-инструментариев, в которых GUI выполняется в отдельном потоке, не связанном с кодом приложения, включая обработчики событий.

Если интерпретатор Tcl не выполняет цикл обработки событий и не обрабатывает события, любые вызовы tkinter из потоков, отличных от потока, в котором работает интерпретатор Tcl, завершатся ошибкой.

Существуют некоторые особые случаи:

  • Библиотеки Tcl/Tk, собранные без поддержки потоков, теперь встречаются редко: входящая в комплект Tcl/Tk 8.6 собрана с поддержкой потоков, поэтому этот случай возникает только в некоторых старых сборках без поддержки потоков. Если библиотека не поддерживает потоки, tkinter вызывает её из исходного потока Python, даже если он отличается от потока, создавшего интерпретатор Tcl. Глобальная блокировка гарантирует, что одновременно выполняется только один вызов.
  • Хотя tkinter позволяет создать несколько экземпляров объекта Tk (каждый со своим интерпретатором), все интерпретаторы одного потока используют общую очередь событий, что быстро приводит к проблемам. На практике не создавайте одновременно более одного экземпляра Tk. Если это необходимо, лучше создавать их в отдельных потоках и убедиться, что используется сборка Tcl/Tk с поддержкой потоков.
  • Блокирующие обработчики событий — не единственный способ помешать интерпретатору Tcl вернуться к циклу обработки событий. Можно даже запустить несколько вложенных циклов обработки событий или полностью отказаться от такого цикла. Если вы предпринимаете что-либо необычное с событиями или потоками, учитывайте эти возможности.
  • Существует несколько отдельных функций tkinter, которые в настоящее время работают только при вызове из потока, создавшего интерпретатор Tcl.

Краткий справочник

Настройка параметров

Параметры управляют такими характеристиками виджета, как цвет и ширина границы. Параметры можно задать тремя способами:

При создании объекта, используя именованные аргументы
fred = Button(self, fg="red", bg="blue")
После создания объекта, обращаясь к имени параметра как к индексу словаря
fred["fg"] = "red"
fred["bg"] = "blue"
Используя метод config() для обновления нескольких атрибутов после создания объекта
fred.config(fg="red", bg="blue")

Примечание

Параметры fg и bg, используемые здесь, а также другие параметры, управляющие внешним видом виджета, относятся к классическим виджетам tkinter. Рекомендуемые во введении тематические виджеты tkinter.ttk их не принимают; вместо этого оформляйте тематический виджет с помощью класса ttk.Style. Три приведённых выше способа задания параметра применимы к обоим наборам виджетов.

Полное описание заданного параметра и его поведения см. на справочных страницах Tk для соответствующего виджета.

Обратите внимание, что на справочных страницах для каждого виджета перечислены «СТАНДАРТНЫЕ ПАРАМЕТРЫ» и «ПАРАМЕТРЫ, СПЕЦИФИЧНЫЕ ДЛЯ ВИДЖЕТА». Первые — это список параметров, общих для многих виджетов, вторые — параметры, специфичные для данного виджета. Стандартные параметры описаны на справочной странице options(3).

В этом документе стандартные параметры не отделены от параметров, специфичных для виджета. Некоторые параметры неприменимы к некоторым типам виджетов. Поддержка конкретного параметра зависит от класса виджета: у кнопок есть параметр command, а у меток — нет.

Поддерживаемые виджетом параметры перечислены на его справочной странице. Их также можно получить во время выполнения, вызвав метод config() без аргументов или метод keys() этого виджета. Возвращаемое значение этих вызовов — словарь, ключами которого являются имена параметров в виде строк (например, 'relief'), а значениями — кортежи из 5 элементов.

Некоторые параметры, например bg, являются синонимами распространённых параметров с длинными именами (bg — сокращённая запись для «background»).

Индекс

Значение

Пример

0

имя параметра

'relief'

1

имя параметра для поиска в базе данных

'relief'

2

класс параметра для поиска в базе данных

'Relief'

3

значение по умолчанию

'raised'

4

текущее значение

'groove'

Пример:

>>> print(fred.config())
{'relief': ('relief', 'relief', 'Relief', 'raised', 'groove')}

Разумеется, напечатанный словарь будет содержать все доступные параметры и их значения. Это лишь пример.

Управление геометрией

Создание виджета не приводит к его отображению. Виджет появляется только после передачи менеджеру геометрии, который вычисляет его размер и положение внутри контейнера и поддерживает актуальность макета при изменении размеров контейнера или его содержимого. Забыть вызвать менеджер геометрии — распространённая ошибка новичков: виджет создан, но ничего не отображается.

В Tk предусмотрено три менеджера геометрии. Каждый из них доступен всем виджетам, поэтому любой виджет может управляться любым из них (однако см. предупреждение ниже о несовместимости grid и pack). Выбор зависит от нужного вам макета.

grid

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

ttk.Label(frm, text="Name:").grid(column=0, row=0, sticky="w")
ttk.Entry(frm).grid(column=1, row=0)
ttk.Button(frm, text="OK").grid(column=1, row=1, sticky="e")
pack

Располагает виджеты вдоль одной из сторон контейнера — "top" (по умолчанию), "bottom", "left" или "right" — и может заставлять их заполнять или занимать всё оставшееся пространство. Удобен для простых компоновок, например одной строки или столбца виджетов либо области содержимого, ограниченной панелью инструментов и строкой состояния.

toolbar.pack(side="top", fill="x")
status.pack(side="bottom", fill="x")
body.pack(side="left", expand=True, fill="both")
place

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

background.place(x=0, y=0, relwidth=1.0, relheight=1.0)
badge.place(relx=1.0, rely=0.0, anchor="ne")

Макеты строятся путём вложения: размещайте виджеты grid или pack, в том числе фреймы, внутри фрейма или окна верхнего уровня. Окнами верхнего уровня управляет оконный менеджер ОС. Классические и тематические виджеты tkinter.ttk можно использовать совместно.

Предупреждение

Не применяйте pack() и grid() к двум виджетам, у которых общий контейнер. Эти два менеджера по-разному согласуют размеры, и приложение может зависнуть, если они будут снова и снова менять размер контейнера в противодействие друг другу. Чтобы сочетать их, размещайте виджеты каждого менеджера в отдельном фрейме.

Полный набор параметров, принимаемых каждым менеджером, вместе с их значениями и значениями по умолчанию описан в разделах Grid.grid_configure(), Pack.pack_configure() и Place.place_configure(); см. также справочные страницы grid(3tk), pack(3tk) и place(3tk).

Связь переменных с виджетами

Некоторые виджеты могут напрямую связывать своё текущее значение с переменной программы, чтобы оба значения оставались синхронизированными. Эта связь настраивается такими параметрами, как variable, textvariable, value, onvalue и offvalue: при изменении виджета пользователем обновляется переменная, а при изменении переменной виджет перерисовывается в соответствии с новым значением.

Виджет можно связать только с объектом Variable, но не с обычной переменной Python. Это ограничение связано не с tkinter, а с различиями между двумя языками: связь требует, чтобы Tcl получал уведомление при каждом изменении значения, а Python не позволяет реагировать на присваивание обычной переменной. Объект Variable решает эту задачу, храня значение внутри интерпретатора Tcl и предоставляя к нему доступ через явные методы get() и set().

Для распространённых типов есть готовые подклассы: StringVar, IntVar, DoubleVar и BooleanVar. Передайте такой объект в качестве параметра textvariable (или variable) виджета, а затем считывайте и обновляйте его с помощью методов get() и set(); виджет будет отслеживать его без дополнительных действий с вашей стороны.

Сохраняйте ссылку на переменную, пока она используется виджетом, например храните её в качестве атрибута. При сборке мусора объект Variable удаляет соответствующую переменную Tcl, разрывая связь с виджетом (см. Variable).

Например:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

# Create the application variable and give it an initial value.
contents = tk.StringVar(value="this is a variable")

# Tell the entry widget to track the variable.
entry = ttk.Entry(root, textvariable=contents)
entry.pack()

# Print the current value whenever the user presses Return.
def print_contents(event):
    print("The current entry content is:", contents.get())

entry.bind("<Return>", print_contents)

# Setting the variable from the program updates the entry through the
# same link.
def clear():
    contents.set("")

ttk.Button(root, text="Clear", command=clear).pack()

root.mainloop()

Оконный менеджер

Оконный менеджер — это часть рабочего стола, отвечающая за строку заголовка, границу и элементы управления, отображаемые вокруг каждого окна верхнего уровня, а также за такие его характеристики, как заголовок, положение, размер и значок. Tk предоставляет доступ к ним через примесь Wm, от которой наследуются корневое окно Tk и все окна Toplevel. Поэтому методы оконного менеджера вызываются непосредственно для окна верхнего уровня. У каждого метода есть короткое имя и эквивалентное имя с префиксом wm_, например title() и wm_title().

Эти методы действуют на окно верхнего уровня независимо от того, состоит ли его содержимое из классических виджетов или тематических виджетов tkinter.ttk. Чтобы получить окно верхнего уровня, содержащее произвольный виджет, вызовите его метод winfo_toplevel().

Например:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("My Application")
root.geometry("640x480")
root.minsize(320, 240)

ttk.Label(root, text="Hello").pack(padx=20, pady=20)

root.mainloop()
Wm.

Типы данных параметров Tk

Многие параметры виджетов, описанные в справочнике, принимают значения нескольких распространённых типов, представленных ниже.

anchor

Допустимы направления по сторонам света: "n", "ne", "e", "se", "s", "sw", "w", "nw", а также "center".

bitmap

Встроено десять именованных растровых изображений: 'error', 'gray12', 'gray25', 'gray50', 'gray75', 'hourglass', 'info', 'questhead', 'question', 'warning'. Чтобы указать имя файла растрового изображения X, задайте полный путь к файлу с префиксом @, например "@/usr/contrib/bitmap/gumby.bit".

boolean

Можно передать целые числа 0 или 1 либо строки "yes" или "no".

callback

Это любая функция Python, не принимающая аргументов. Например:

def print_it():
    print("hi there")
fred["command"] = print_it
color

Цвета можно задавать именами цветов X из файла rgb.txt или строками, представляющими значения RGB в диапазонах: 4 бита — "#RGB", 8 бит — "#RRGGBB", 12 бит — "#RRRGGGBBB" или 16 бит — "#RRRRGGGGBBBB", где R, G, B обозначают любую допустимую шестнадцатеричную цифру. Список именованных цветов см. на справочной странице colors(3tk).

cursor

Имя курсора мыши, отображаемого, когда указатель находится над виджетом. Tk предоставляет переносимый набор имён курсоров, доступных на всех платформах (например, "arrow", "watch", "cross" или "hand2"); также можно использовать стандартные имена курсоров X из cursorfont.h без префикса XC_ (так, XC_hand2 становится "hand2"). Полный список имён, включая платформозависимые, приведён на справочной странице cursors(3tk). Можно также указать собственные файлы растрового изображения и маски. В Windows можно напрямую использовать файл курсора (.cur или .ani), указав путь к нему с префиксом @, например "@C:/cursors/bart.ani".

distance

Расстояния на экране можно задавать в пикселях или абсолютных единицах. Пиксели указываются числами, а абсолютные расстояния — строками, где последняя буква обозначает единицу измерения: c для сантиметров, i для дюймов, m для миллиметров, p для типографских пунктов. Например, 3,5 дюйма задаются как "3.5i".

font

Tk использует описание шрифта, например {courier 10 bold}; в tkinter его удобнее всего передавать в виде кортежа из (family, size, *styles) (или в виде эквивалентной строки "Courier 10 bold"). Положительные значения размера шрифта задаются в пунктах, отрицательные — в пикселях.

geometry

Это строка вида widthxheight, где ширина и высота измеряются в пикселях для большинства виджетов (в символах — для виджетов, отображающих текст). Например: fred["geometry"] = "200x100".

justify

Допустимые значения — строки: "left", "center" и "right".

region

Это строка из четырёх элементов, разделённых пробелами, каждый из которых представляет допустимое расстояние (см. выше). Например, "2 3 4 5", "3i 2i 4.5i 2i" и "3c 2c 4c 10.43c" — допустимые области.

relief

Определяет стиль границы виджета. Допустимые значения: "raised", "sunken", "flat", "groove", "ridge" и "solid".

scrollcommand

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

wrap

Допустимые значения: "none", "char" или "word".

Привязки и события

Метод bind команды виджета позволяет отслеживать определённые события и вызывать функцию обратного вызова при возникновении события соответствующего типа. Метод bind имеет следующий формат:

def bind(self, sequence, func, add=''):

где:

sequence

строка, обозначающая тип целевого события. Физические события задаются в формате <modifier-modifier-type-detail> (например, "<Enter>" или "<Control-Button-1>"); определённые приложением виртуальные события задаются двойными угловыми скобками, например "<<Paste>>". (Подробнее см. на справочной странице bind(3tk).)

func

функция Python, принимающая один аргумент, которая вызывается при возникновении события. В качестве аргумента передаётся экземпляр Event. (Функции, используемые таким образом, обычно называют функциями обратного вызова.)

add

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

Например:

def turn_red(self, event):
    event.widget["activeforeground"] = "red"

self.button.bind("<Enter>", self.turn_red)

Обратите внимание, как в функции обратного вызова turn_red() используется поле widget события. Это поле содержит виджет, получивший событие X. В следующей таблице перечислены остальные доступные поля события и соответствующие им обозначения в Tk, которые могут пригодиться при обращении к справочным страницам Tk.

Tk

Поле события Tkinter

Tk

Поле события Tkinter

%f

focus

%A

char

%h

height

%E

send_event

%k

keycode

%K

keysym

%s

state

%N

keysym_num

%t

time

%T

type

%w

width

%W

widget

%x

x

%X

x_root

%y

y

%Y

y_root

%#

serial

%b

num

%d

detail

%D

delta

Указанный выше параметр add влияет только на создаваемые вами привязки. Каждый виджет также наследует привязки класса, реализующие его стандартное поведение: например, виджет Text привязывает сочетание Control-t к перестановке двух символов. Они описаны в разделе привязок справочной страницы Tk для соответствующего виджета (например, text(3tk) или entry(3tk)).

Привязки класса обрабатываются отдельно от пользовательских, поэтому добавление собственной привязки события не заменяет стандартную: выполняются обе. Чтобы отключить нежелательную стандартную привязку, привяжите событие к виджету и верните из функции обратного вызова строку "break".

Параметр индекса

Для ряда виджетов требуется передавать параметры «индекса». Они указывают на определённое место в виджете Text, на конкретные символы в виджете Entry или на определённые пункты меню в виджете Menu.

Индексы виджета Entry (index, view index и т. д.)

У виджетов Entry есть методы и параметры, ссылающиеся на позиции символов в отображаемом тексте. Если требуется индекс, можно передать:

  • целое число, обозначающее числовую позицию символа, отсчитываемую от начала текста с 0;
  • строку "anchor", обозначающую точку привязки выделения, заданную методами выделения виджета;
  • строку "end", обозначающую позицию сразу после последнего символа;
  • строку "insert", обозначающую символ сразу после курсора вставки;
  • строки "sel.first" и "sel.last", обозначающие первый символ выделения и позицию сразу после последнего (использовать их при отсутствии выделения нельзя);
  • строку, состоящую из @ и следующего за ним целого числа, например "@6"; целое число интерпретируется как координата пикселя x в системе координат поля ввода и задаёт символ, расположенный в этой точке.
Индексы виджета Text

Синтаксис индексов для виджетов Text очень широк; лучше всего он описан на справочных страницах Tk.

Индексы меню (menu.invoke(), menu.entryconfig() и т. д.)

Некоторые параметры и методы меню работают с определёнными пунктами меню. Если для параметра или аргумента требуется индекс меню, можно передать:

  • целое число, обозначающее числовую позицию пункта в виджете, отсчитываемую сверху с 0;
  • строку "active", обозначающую пункт меню, на котором сейчас находится курсор;
  • строку "last", обозначающую последний пункт меню;
  • строку, состоящую из @ и следующего за ним целого числа, например "@6"; целое число интерпретируется как координата пикселя y в системе координат меню;
  • строку "none", означающую отсутствие пункта меню; чаще всего она используется с menu.activate() для деактивации всех пунктов, и, наконец,
  • текстовую строку, сопоставляемую с меткой пункта меню при поиске сверху вниз. Обратите внимание, что этот тип индекса рассматривается после всех остальных. Поэтому совпадения для пунктов меню с метками last, active или none могут вместо этого интерпретироваться как указанные выше литералы.

Изображения

Изображения различных форматов можно создавать с помощью соответствующего подкласса tkinter.Image:

  • BitmapImage — для изображений в формате XBM.
  • PhotoImage — для изображений в форматах PGM, PPM, GIF и PNG. Последний поддерживается начиная с Tk 8.6.

Изображения обоих типов создаются с помощью параметра file или data (доступны также другие параметры).

Изменено в версии 3.13: Добавлен метод copy_replace() класса PhotoImage для копирования области одного изображения в другое, возможно, с увеличением и/или прореживанием пикселей. В методы copy(), zoom() и subsample() класса PhotoImage добавлен параметр from_coords. В метод copy() класса PhotoImage добавлены параметры zoom и subsample.

Объект изображения можно использовать везде, где виджет поддерживает параметр image (например, в метках, кнопках и меню). В таких случаях Tk не сохраняет ссылку на изображение. При удалении последней ссылки Python на объект изображения данные изображения также удаляются, и Tk будет отображать пустую область везде, где использовалось изображение.

См. также

Пакет Pillow добавляет поддержку таких форматов, как BMP, JPEG, TIFF и WebP, а также других.

Справочник

В этом разделе описаны классы, методы, функции и константы модуля tkinter. Большинство из них являются обёртками для команд Tcl/Tk; полный список параметров виджетов и дополнительные сведения см. в официальной документации Tcl/Tk.

exception tkinter.TclError

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

Базовые классы и классы-примеси

class tkinter.Misc

Класс Misc — это класс-примесь, от которого наследуются Tk и, через BaseWidget, все виджеты. Он предоставляет обширный набор методов, общих для всех объектов Tk: получение сведений об окнах, управление привязками событий и циклом обработки событий, управление фокусом клавиатуры и захватом указателя, доступ к выделению, буферу обмена и базе параметров, а также различные вспомогательные средства и средства интроспекции. Поскольку эти методы наследуются, они доступны во всех виджетах и в объекте приложения Tk; здесь они описаны один раз, а не повторяются для каждого виджета.

cget(key)

Возвращает в виде строки текущее значение параметра конфигурации с именем key для этого виджета. Выражение widget[key] является эквивалентным и может использоваться вместо него.

configure(cnf=None, **kw)

Запрашивает или изменяет параметры конфигурации виджета. Если аргументы не указаны, возвращает словарь, сопоставляющий каждому доступному имени параметра кортеж с его описанием (его имя, имя ресурса X, класс ресурса X, значение по умолчанию и текущее значение). Если в виде строки указано одно имя параметра, возвращает кортеж только для этого параметра. Если указаны один или несколько именованных аргументов либо в качестве cnf передан словарь, устанавливает каждому указанному параметру соответствующее значение; выражение widget[key] = value задаёт один параметр тем же способом.

config() — псевдоним configure().

keys()

Возвращает список имен всех параметров конфигурации этого виджета.

getboolean(s)

Интерпретирует строку s как логическое значение Tcl и возвращает соответствующее значение типа bool. Tcl принимает такие значения, как '1', '0', 'yes', 'no', 'true' и 'false'. Вызывает исключение ValueError, если s не является допустимым логическим значением.

getdouble(s)

Интерпретирует строку s как число с плавающей точкой Tcl и возвращает его как значение типа float. Вызывает исключение ValueError, если s не является допустимым числом.

Добавлено в версии 3.5.

getint(s)

Интерпретирует строку s как целое число Tcl и возвращает его как значение типа int. Вызывает исключение ValueError, если s не является допустимым целым числом.

getvar(name)

Возвращает значение глобальной переменной Tcl с именем name.

setvar(name, value)

Устанавливает для глобальной переменной Tcl с именем name значение value.

Методы getvar() и setvar() предоставляют прямой доступ к переменным Tcl. В большинстве случаев вместо них используют подкласс Variable, например StringVar или IntVar, который оборачивает переменную Tcl и преобразует её значение в тип Python и обратно.

register(func, subst=None, needcleanup=1)

Регистрирует вызываемый объект Python func как команду Tcl и возвращает имя новой команды в виде строки. При каждом вызове этой команды из Tcl вызывается func; если указан subst, он предварительно применяется к аргументам команды. Этот механизм используется внутри для преобразования обратных вызовов Python в имена команд, передаваемые параметрам Tk, например command. Если needcleanup не равно false, команда автоматически удаляется при уничтожении виджета.

Изменено в версии 3.13: Аргументы, передаваемые в func, больше не преобразуются в строки.

deletecommand(name)

Удаляет команду Tcl с именем name, например команду, имя которой ранее было возвращено методом register().

nametowidget(name)

Возвращает экземпляр виджета, соответствующий пути Tk name.

send(interp, cmd, *args)

Отправляет команду Tcl cmd с указанными аргументами args интерпретатору Tcl, зарегистрированному под именем interp, и возвращает результат. Доступно не на всех платформах.

destroy()

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

tkraise(aboveThis=None)

Поднимает этот виджет в порядке наложения, чтобы он отображался поверх соседних виджетов. Если указан aboveThis, виджет перемещается в порядке наложения непосредственно над ним.

lift() — псевдоним tkraise().

lower(belowThis=None)

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

tkraise()/lift() и lower() переопределены в виджете Canvas, где вместо этого они меняют порядок наложения элементов холста.

image_names()

Возвращает имена всех изображений, существующих в данный момент в интерпретаторе Tcl.

Переопределён в виджете Text, где image_names() вместо этого возвращает имена встроенных изображений.

image_types()

Возвращает доступные типы изображений, например 'photo' и 'bitmap'.

grid_anchor(anchor=None)

Устанавливает привязку, определяющую расположение сетки внутри этого контейнера, если контейнер больше сетки и ни одна строка или колонка не имеет ненулевого веса. anchor — одна из стандартных строковых констант привязки, например 'nw' (значение по умолчанию) или 'center'. При вызове без аргументов этот метод ничего не делает.

anchor() — псевдоним grid_anchor().

Добавлено в версии 3.3.

grid_bbox(column=None, row=None, col2=None, row2=None)

Возвращает ограничивающий прямоугольник в пикселях для области сетки, размещённой в этом контейнере, в виде кортежа из четырёх элементов (xoffset, yoffset, width, height). Если аргументы не указаны, возвращается ограничивающий прямоугольник всей сетки. Если указаны column и row, прямоугольник охватывает ячейки от ячейки в строке и колонке 0 до указанной ячейки; если также указаны col2 и row2, он охватывает ячейки от (column, row) до (col2, row2).

bbox() — псевдоним grid_bbox(), за исключением виджетов Canvas, Listbox, Spinbox, Text, ttk.Entry и ttk.Treeview, которые предоставляют собственный метод bbox().

grid_columnconfigure(index, cnf={}, **kw)

Запрашивает или задаёт свойства колонки (или колонок) index сетки, управляемой этим контейнером. index может быть номером колонки; при задании параметров это также может быть список номеров колонок, строка 'all' для воздействия на все колонки или дочерний виджет, затрагивающий занимаемые им колонки. Поддерживаются следующие параметры:

minsize

Минимальный размер колонки в пикселях.

weight

Целое число, задающее долю дополнительного пространства, выделяемую колонке. Вес 0 оставляет колонку запрошенного размера, а колонка с весом два увеличивается вдвое быстрее колонки с весом один.

uniform

Имя группы равномерного распределения. Колонки с одинаковым непустым именем группы сохраняют размеры, строго пропорциональные их весам.

pad

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

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

columnconfigure() — псевдоним grid_columnconfigure().

grid_rowconfigure(index, cnf={}, **kw)

Запрашивает или задаёт свойства строки (или строк) index сетки, управляемой этим контейнером. Значение index интерпретируется так же, как в методе grid_columnconfigure(); поддерживаются те же параметры (minsize, weight, uniform и pad), но применяются они к строке, а не к колонке.

rowconfigure() — псевдоним grid_rowconfigure().

grid_location(x, y)

Возвращает (column, row) ячейки сетки, содержащей пиксель в позиции (x, y), заданной в пикселях относительно этого контейнера. Для расположения выше или левее сетки для соответствующей координаты возвращается -1.

grid_propagate()
grid_propagate(flag)

Включает или отключает распространение геометрии для этого контейнера, если его дочерними элементами управляет менеджер геометрии grid. Если flag имеет значение true, контейнер изменяет размер, чтобы соответствовать запрошенным размерам дочерних элементов; если значение false, размер контейнера остаётся под вашим управлением. При вызове без аргументов возвращает текущую настройку в виде логического значения.

grid_size()

Возвращает размер сетки, управляемой этим контейнером, в виде кортежа (columns, rows).

size() — псевдоним grid_size(), за исключением виджета Listbox, который предоставляет собственный метод size().

grid_slaves(row=None, column=None)

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

pack_propagate()
pack_propagate(flag)

Включает или отключает распространение геометрии для этого контейнера, если его дочерними элементами управляет менеджер геометрии pack. Если flag имеет значение true, контейнер изменяет размер, чтобы соответствовать запрошенным размерам дочерних элементов; если значение false, размер контейнера остаётся под вашим управлением. При вызове без аргументов возвращает текущую настройку в виде логического значения.

propagate() — псевдоним pack_propagate().

pack_slaves()

Возвращает список дочерних виджетов, размещённых в этом контейнере с помощью менеджера геометрии pack, в порядке размещения.

slaves() — псевдоним pack_slaves().

place_slaves()

Возвращает список дочерних виджетов, размещённых в этом контейнере с помощью менеджера геометрии place.

bind(sequence=None, func=None, add=None)

Привязывает шаблон события sequence этого виджета к вызываемому объекту func.

sequence — это шаблон события, например '<Button-1>' (щелчок мышью) или '<KeyPress-a>'; также это может быть объединение нескольких таких шаблонов, события которых должны произойти одно за другим за короткий промежуток времени. При возникновении события вызывается func, единственным аргументом которой служит экземпляр Event с описанием этого события; если func возвращает строку 'break', дальнейшие привязки для события не вызываются.

Если add имеет значение true, func добавляется к функциям, уже привязанным к sequence; в противном случае она заменяет их. Привязка применяется только к этому виджету.

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

Если func не указан, возвращается функция, в данный момент связанная с sequence; если не указан и sequence, возвращается список всех шаблонов событий, для которых у этого виджета существуют привязки.

bind_class(className, sequence=None, func=None, add=None)

Аналогичен bind(), но привязывает func к тегу привязки className, а не к отдельному виджету, поэтому привязка применяется ко всем виджетам с этим тегом. Обычно className — это имя класса виджета, например 'Button'; в этом случае привязка затрагивает все виджеты этого класса. Набор тегов привязки виджета можно просмотреть и изменить с помощью метода bindtags().

Остальные аргументы и возвращаемое значение такие же, как у bind().

bind_all(sequence=None, func=None, add=None)

Аналогичен bind(), но привязывает func к специальному тегу привязки 'all', поэтому привязка применяется ко всем виджетам приложения.

Остальные аргументы и возвращаемое значение такие же, как у bind().

unbind(sequence, funcid=None)

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

Если указан funcid, удаляется только идентифицированная им функция (значение, возвращённое предыдущим вызовом bind()), а связанная с ней команда Tcl удаляется. В противном случае все привязки для sequence уничтожаются, и для него не остаётся привязок.

Изменено в версии 3.13: Если указан funcid, отменяется привязка только этого обратного вызова; остальные обратные вызовы, привязанные к sequence, сохраняются.

unbind_class(className, sequence)

Удаляет все привязки шаблона события sequence для тега привязки className. См. bind_class().

unbind_all(sequence)

Удаляет все привязки шаблона события sequence для специального тега привязки 'all'. См. bind_all().

bindtags(tagList=None)

Если tagList не указан, возвращает кортеж тегов привязки, связанных с этим виджетом. Когда в виджете происходит событие, оно последовательно обрабатывается каждым тегом привязки виджета, а для каждого тега выполняется наиболее точно соответствующая привязка. По умолчанию у виджета есть четыре тега привязки: его собственный путь, класс виджета, путь к ближайшему родительскому окну верхнего уровня и 'all' — именно в таком порядке.

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

Методы с префиксом event_ определяют виртуальные события и программно генерируют события.

event_add(virtual, *sequences)

Связывает виртуальное событие virtual, имя которого имеет вид '<<Paste>>', с каждым из физических шаблонов событий, указанных в sequences, так что виртуальное событие срабатывает при возникновении любого из них. Если virtual уже определено, новые шаблоны добавляются к существующим.

event_delete(virtual, *sequences)

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

event_generate(sequence, **kw)

Генерирует событие sequence для этого виджета и назначает его обработку так, как если бы оно поступило от оконной системы. sequence должен быть одним шаблоном события, например '<Button-1>' или '<<Paste>>', а не объединением нескольких шаблонов. Именованные аргументы задают дополнительные поля события, например x и y для позиции указателя или when для управления временем обработки события; полный список см. на странице руководства Tk event.

event_info(virtual=None)

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

Методы с префиксом after планируют вызов обратных вызовов после задержки или в период простоя приложения.

after(ms, func=None, *args, **kw)

Планирует вызов вызываемого объекта func через ms миллисекунд, передавая ему args и kw в качестве позиционных и именованных аргументов. Возвращает идентификатор, который можно передать в after_cancel(), чтобы отменить вызов.

Если func не указан, вместо этого приостанавливает выполнение на ms миллисекунд, не обрабатывая в это время события, и возвращает None.

Изменено в версии 3.10: Теперь func может быть любым вызываемым объектом, а не только функцией.

Изменено в версии 3.14: Именованные аргументы теперь передаются в func.

after_cancel(id)

Отменяет обратный вызов, ранее запланированный с помощью after() или after_idle(). id должен быть идентификатором, возвращённым одним из этих методов; передача значения, которое не является таким идентификатором, вызывает исключение ValueError. Если обратный вызов уже выполнен или отменён, метод ничего не делает.

Изменено в версии 3.7: Передача None (или любого ложного значения) в качестве id теперь вызывает исключение ValueError.

after_idle(func, *args, **kw)

Планирует вызов вызываемого объекта func в следующий момент простоя главного цикла Tk, то есть когда ему больше нечего обрабатывать, передавая ему args и kw. Возвращает идентификатор, который можно передать в after_cancel(), чтобы отменить вызов.

Изменено в версии 3.14: Именованные аргументы теперь передаются в func.

after_info(id=None)

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

Если указан id, он должен идентифицировать обратный вызов, который ещё не был выполнен или отменён; возвращаемое значение — кортеж (script, type), где script обозначает вызываемую функцию, а type принимает значение 'idle' или 'timer'. Если id не существует, вызывается исключение TclError.

Добавлено в версии 3.13.

mainloop(n=0)

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

quit()

Завершает работу интерпретатора Tcl, в результате чего mainloop() возвращает управление.

update()

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

update_idletasks()

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

wait_variable(name)

Ожидает изменения переменной Tcl name, продолжая в это время обрабатывать события, чтобы приложение оставалось отзывчивым. Обычно name — это экземпляр Variable, например IntVar или StringVar.

waitvar() — псевдоним wait_variable().

wait_window(window=None)

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

wait_visibility(window=None)

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

Методы с префиксом focus_ управляют фокусом клавиатуры.

focus()

Перевести фокус ввода с клавиатуры для отображения этого виджета на данный виджет. Если в данный момент приложение не имеет фокуса ввода на отображении этого виджета, виджет запоминается как окно фокуса для своего окна верхнего уровня, и фокус будет переведён на него в следующий раз, когда оконный менеджер передаст фокус окну верхнего уровня. focus() — это псевдоним focus_set(), кроме виджетов Canvas и ttk.Treeview, в которых предусмотрен собственный метод focus().

focus_force()

Перевести фокус ввода с клавиатуры на этот виджет, даже если приложение в данный момент не имеет фокуса ввода для отображения виджета. Этот метод следует использовать редко, если вообще использовать; обычно приложению следует дождаться, пока оконный менеджер передаст ему фокус, а не запрашивать его самостоятельно.

focus_get()

Вернуть виджет, который в данный момент имеет фокус ввода с клавиатуры в приложении, или None, если ни один виджет приложения не имеет фокуса. Для корректной работы с несколькими дисплеями используйте focus_displayof().

focus_displayof()

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

focus_lastfor()

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

tk_focusFollowsMouse()

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

tk_focusNext()

Вернуть следующий виджет после этого в порядке перемещения фокуса с клавиатуры или None, если такого нет. Сначала порядок переходит к следующему дочернему виджету, затем рекурсивно к его дочерним виджетам, а потом к следующему соседнему виджету, расположенному выше в порядке наложения. Виджет пропускается, если для его параметра takefocus задано значение 0. Этот метод используется в привязках по умолчанию для клавиши Tab.

tk_focusPrev()

Вернуть предыдущий виджет перед этим в порядке перемещения фокуса с клавиатуры или None, если такого нет. Описание порядка см. в tk_focusNext(). Этот метод используется в привязках по умолчанию для сочетания клавиш Shift-Tab.

Методы с префиксом grab_ устанавливают и запрашивают захват ввода, который направляет все события ввода одному виджету.

grab_set()

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

grab_set_global()

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

grab_release()

Снять захват с этого виджета, если он установлен; в противном случае ничего не делать.

grab_current()

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

grab_status()

Вернуть None, если для этого виджета в данный момент не установлен захват, "local", если установлен локальный захват, или "global", если установлен глобальный захват.

Методы с префиксом selection_ получают данные о выделении X и управляют им.

selection_clear(**kw)

Очистить выделение X, чтобы ни одно окно больше им не владело. Очищаемое выделение задаётся именованным аргументом selection — именем атома, например 'PRIMARY' или 'CLIPBOARD'; по умолчанию используется PRIMARY. Именованный аргумент displayof задаёт виджет, определяющий дисплей, с которым нужно работать; по умолчанию используется этот виджет.

Для виджетов Entry, Listbox и Spinbox этот метод переопределён: selection_clear() очищает собственное выделение виджета.

selection_get(**kw)

Вернуть содержимое текущего выделения X. Именованный аргумент selection задаёт имя выделения; по умолчанию используется PRIMARY. Именованный аргумент type задаёт форму, в которой нужно вернуть данные (целевой формат преобразования), — имя атома, например 'STRING' или 'FILE_NAME'; по умолчанию используется STRING, за исключением X11, где сначала проверяется UTF8_STRING, а в качестве запасного варианта используется STRING. Именованный аргумент displayof задаёт виджет, определяющий дисплей, с которого нужно получить выделение; по умолчанию используется этот виджет.

selection_handle(command, **kw)

Зарегистрировать command в качестве обработчика, который предоставляет выделение X, принадлежащее этому виджету, когда его запрашивает другое приложение. При получении выделения вызывается command с двумя аргументами: начальным смещением символа и максимальным количеством символов для возврата. Функция должна вернуть не более указанного количества символов выделения, начиная с этого смещения; для очень длинных выделений она вызывается повторно с возрастающими смещениями. Именованный аргумент selection задаёт имя выделения (по умолчанию PRIMARY), а именованный аргумент type задаёт форму выделения, предоставляемую обработчиком (например, 'STRING' или 'FILE_NAME'; по умолчанию STRING).

selection_own(**kw)

Сделать этот виджет владельцем выделения X на своём дисплее. Предыдущий владелец, если он был, уведомляется о потере выделения. Именованный аргумент selection задаёт имя выделения; по умолчанию используется PRIMARY.

selection_own_get(**kw)

Вернуть виджет этого приложения, который владеет выделением X на дисплее, где находится данный виджет, или None, если ни один виджет этого приложения не владеет выделением. Именованный аргумент selection задаёт имя выделения; по умолчанию используется PRIMARY. Именованный аргумент displayof задаёт виджет, определяющий дисплей для запроса; по умолчанию используется этот виджет.

Методы с префиксом clipboard_ управляют буфером обмена.

clipboard_append(string, **kw)

Добавить string в буфер обмена Tk и заявить право владения буфером обмена на дисплее этого виджета. Перед добавлением буфер обмена следует очистить с помощью clipboard_clear(); все добавления необходимо завершить до возврата в цикл обработки событий, чтобы обновление буфера обмена было атомарным. Именованный аргумент type задаёт форму данных — имя атома, например 'STRING' или 'FILE_NAME' (по умолчанию STRING), а именованный аргумент format задаёт способ представления данных при передаче (по умолчанию STRING). Именованный аргумент displayof задаёт виджет, определяющий целевой дисплей; по умолчанию используется этот виджет. Содержимое можно получить с помощью clipboard_get() или selection_get().

clipboard_clear(**kw)

Заявить право владения буфером обмена на дисплее этого виджета и удалить его предыдущее содержимое. Именованный аргумент displayof задаёт виджет, определяющий целевой дисплей; по умолчанию используется этот виджет.

clipboard_get(**kw)

Получить данные из буфера обмена на дисплее этого виджета. Именованный аргумент type задаёт форму, в которой нужно вернуть данные, — имя атома, например 'STRING' или 'FILE_NAME'; по умолчанию используется STRING, за исключением X11, где сначала проверяется UTF8_STRING, а в качестве запасного варианта используется STRING. Именованный аргумент displayof задаёт виджет, определяющий дисплей; по умолчанию используется корневое окно приложения. Это эквивалентно selection_get(selection='CLIPBOARD').

Методы с префиксом option_ запрашивают и изменяют базу данных параметров Tk.

option_add(pattern, value, priority=None)

Добавить параметр в базу данных параметров Tk, связав value с pattern. pattern состоит из имён и/или классов, разделённых звёздочками или точками, в стандартном формате X. priority — целое число от 0 до 100 или одно из символьных имён 'widgetDefault' (20), 'startupFile' (40), 'userDefault' (60) или 'interactive' (80); по умолчанию используется interactive.

option_clear()

Очистить базу данных параметров Tk. Параметры по умолчанию из свойства RESOURCE_MANAGER или файла .Xdefaults автоматически загружаются повторно при следующем добавлении параметра в базу данных или удалении из неё.

option_get(name, className)

Вернуть из базы данных параметров Tk значение параметра, соответствующего этому виджету и заданным name и className, или пустую строку, если совпадающей записи нет. Если совпадают несколько записей, возвращается запись с наивысшим приоритетом; среди записей с одинаковым приоритетом возвращается добавленная последней.

option_readfile(fileName, priority=None)

Прочитать файл с именем fileName, который должен иметь стандартный формат базы данных ресурсов X, например .Xdefaults, и добавить все указанные в нём параметры в базу данных параметров Tk. Значение priority интерпретируется так же, как в option_add(); по умолчанию используется interactive.

bell(displayof=0)

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

tk_setPalette(background, /)
tk_setPalette(*args, **kw)

Установить новую цветовую схему для всех элементов виджетов Tk. Существующие виджеты обновляются, а база данных параметров изменяется так, чтобы новые виджеты использовали новые цвета. Один аргумент-цвет трактуется как обычный цвет фона, на основе которого вычисляется полная палитра. В качестве альтернативы аргументы можно задавать парами именованных параметров name/value, указывающими отдельные параметры в базе данных. Распознаваемые имена параметров: activeBackground, activeForeground, background, disabledForeground, foreground, highlightBackground, highlightColor, insertBackground, selectColor, selectBackground, selectForeground и troughColor; для неуказанных параметров вычисляются подходящие значения по умолчанию.

tk_bisque()

Вернуть цвета приложения к светло-коричневой цветовой схеме (bisque), использовавшейся в Tk 3.6 и более ранних версиях. Предоставляется для обратной совместимости.

tk_strictMotif(boolean=None)

Запросить или задать, должен ли внешний вид Tk строго соответствовать Motif. Значение boolean, равное true, включает строгое соответствие Motif (например, цвет ползунка не меняется при наведении мыши). Вернуть полученную настройку.

Методы с префиксом busy_ управляют состоянием занятости окна: отображают курсор занятости и игнорируют пользовательский ввод.

tk_busy_hold(**kw)

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

Поддерживается только один параметр конфигурации — cursor, задающий курсор, отображаемый, пока виджет занят; он может принимать любые значения, допустимые для configure().

busy_hold(), busy() и tk_busy() — псевдонимы tk_busy_hold().

Добавлено в версии 3.13.

tk_busy_configure(cnf=None, **kw)

Запросить или изменить параметры конфигурации окна занятости. Виджет должен быть предварительно переведён в состояние занятости с помощью tk_busy_hold(). Если аргументы не указаны, вернуть словарь со всеми доступными параметрами; если cnf — имя параметра, вернуть кортеж с описанием этого параметра. В противном случае задать указанные значения для переданных параметров. Параметры могут принимать любые значения, допустимые для tk_busy_hold().

База данных параметров используется через имя или класс виджета. Например, если виджет Frame с именем frame нужно перевести в состояние занятости, курсор занятости можно задать одним из следующих вызовов:

w.option_add('*frame.busyCursor', 'gumby')
w.option_add('*Frame.BusyCursor', 'gumby')

busy_configure(), busy_config() и tk_busy_config() — псевдонимы tk_busy_configure().

Добавлено в версии 3.13.

tk_busy_cget(option)

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

busy_cget() — псевдоним tk_busy_cget().

Добавлено в версии 3.13.

tk_busy_forget()

Вывести этот виджет из состояния занятости и освободить ресурсы (включая прозрачное окно), выделенные при переводе в это состояние. Виджет снова будет получать пользовательские события. Эти ресурсы также освобождаются при уничтожении виджета.

busy_forget() — псевдоним tk_busy_forget().

Добавлено в версии 3.13.

tk_busy_status()

Вернуть True, если виджет в данный момент занят, и False в противном случае.

busy_status() — псевдоним tk_busy_status().

Добавлено в версии 3.13.

tk_busy_current(pattern=None)

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

busy_current() — псевдоним tk_busy_current().

Добавлено в версии 3.13.

Методы с префиксом winfo_ получают сведения об окнах, которыми управляет Tk.

winfo_atom(name, displayof=0)

Вернуть целочисленный идентификатор атома с именем name, создав новый атом, если он не существует. Если задан displayof, атом ищется на дисплее соответствующего окна; в противном случае поиск выполняется на дисплее главного окна приложения.

winfo_atomname(id, displayof=0)

Вернуть текстовое имя атома с целочисленным идентификатором id. Это обратная операция для winfo_atom(). Если задан displayof, идентификатор ищется на дисплее соответствующего окна; в противном случае поиск выполняется на дисплее главного окна приложения.

winfo_cells()

Вернуть количество ячеек в цветовой карте виджета.

winfo_children()

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

winfo_class()

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

winfo_colormapfull()

Вернуть True, если известно, что цветовая карта виджета заполнена, и False в противном случае.

winfo_containing(rootX, rootY, displayof=0)

Вернуть виджет, содержащий точку с координатами rootX и rootY, или None, если ни одно окно этого приложения не содержит эту точку. Координаты указаны в экранных единицах в системе координат корневого окна. Если задан displayof, координаты относятся к экрану, на котором находится соответствующее окно; в противном случае они относятся к экрану главного окна приложения.

winfo_depth()

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

winfo_exists()

Вернуть true, если виджет существует, и false в противном случае.

winfo_fpixels(number)

Вернуть число с плавающей точкой, указывающее количество пикселей в виджете, соответствующее экранному расстоянию number (например, "2.0c" или "1i"). Результат может быть дробным; для получения округлённого целого значения используйте winfo_pixels().

winfo_geometry()

Вернуть геометрию виджета в формате widthxheight+x+y. Все размеры указаны в пикселях. Смещение может быть отрицательным; см. geometry().

winfo_height()

Вернуть высоту виджета в пикселях. При создании высота окна равна 1 пикселю; позднее её изменяет менеджер геометрии. См. также winfo_reqheight().

winfo_id()

Вернуть низкоуровневый идентификатор виджета, зависящий от платформы. В Unix это идентификатор окна X, а в Windows — дескриптор окна.

winfo_interps(displayof=0)

Вернуть кортеж с именами всех интерпретаторов Tcl, зарегистрированных в данный момент для конкретного дисплея. Если задан displayof, возвращаемое значение относится к дисплею соответствующего окна; в противном случае оно относится к дисплею главного окна приложения.

winfo_ismapped()

Вернуть true, если виджет в данный момент отображён, и false в противном случае.

winfo_manager()

Вернуть имя менеджера геометрии, который в данный момент управляет виджетом, или пустую строку, если виджетом не управляет ни один менеджер геометрии.

winfo_name()

Вернуть имя виджета в пределах его родителя, а не полное имя пути.

winfo_parent()

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

winfo_pathname(id, displayof=0)

Вернуть имя пути окна с идентификатором id. Если задан displayof, идентификатор ищется на дисплее соответствующего окна; в противном случае поиск выполняется на дисплее главного окна приложения.

winfo_pixels(number)

Вернуть количество пикселей в виджете, соответствующее экранному расстоянию number (например, "2.0c" или "1i"). Результат округляется до ближайшего целого числа; для получения дробного значения используйте winfo_fpixels().

winfo_pointerx()

Вернуть координату x указателя в пикселях относительно корневого окна экрана (или виртуального корня, если он используется). Вернуть -1, если указатель находится не на том же экране, что и виджет.

winfo_pointerxy()

Вернуть координаты указателя в виде кортежа (x, y) в пикселях относительно корневого окна экрана (или виртуального корня, если он используется). Если указатель находится не на том же экране, что и виджет, обе координаты равны -1.

winfo_pointery()

Вернуть координату y указателя в пикселях относительно корневого окна экрана (или виртуального корня, если он используется). Вернуть -1, если указатель находится не на том же экране, что и виджет.

winfo_reqheight()

Вернуть запрошенную высоту виджета в пикселях. Это значение используется менеджером геометрии виджета для вычисления его геометрии.

winfo_reqwidth()

Вернуть запрошенную ширину виджета в пикселях. Это значение используется менеджером геометрии виджета для вычисления его геометрии.

winfo_rgb(color)

Возвращает кортеж (r, g, b) интенсивностей красного, зелёного и синего цветов в диапазоне от 0 до 65535, соответствующих color в виджете. color можно указать в любой форме, допустимой для параметра цвета.

winfo_rootx()

Возвращает координату x верхнего левого угла границы виджета (или самого виджета, если у него нет границы) относительно корневого окна экрана.

winfo_rooty()

Возвращает координату y верхнего левого угла границы виджета (или самого виджета, если у него нет границы) относительно корневого окна экрана.

winfo_screen()

Возвращает имя экрана, связанного с виджетом, в формате displayName.screenIndex.

winfo_screencells()

Возвращает количество ячеек в стандартной палитре экрана виджета.

winfo_screendepth()

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

winfo_screenheight()

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

winfo_screenmmheight()

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

winfo_screenmmwidth()

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

winfo_screenvisual()

Возвращает класс визуального представления по умолчанию для экрана виджета: "directcolor", "grayscale", "pseudocolor", "staticcolor", "staticgray" или "truecolor".

winfo_screenwidth()

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

winfo_server()

Возвращает строку со сведениями о сервере для дисплея виджета. Точный формат этой строки может различаться на разных платформах.

winfo_toplevel()

Возвращает окно верхнего уровня иерархии, содержащее виджет. В стандартном Tk это всегда виджет Toplevel.

winfo_viewable()

Возвращает true, если виджет и все его предки вплоть до ближайшего окна верхнего уровня отображены; в противном случае возвращает false.

winfo_visual()

Возвращает класс визуального представления виджета: "directcolor", "grayscale", "pseudocolor", "staticcolor", "staticgray" или "truecolor".

winfo_visualid()

Возвращает идентификатор X визуального представления виджета.

winfo_visualsavailable(includeids=False)

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

winfo_vrootheight()

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

winfo_vrootwidth()

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

winfo_vrootx()

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

winfo_vrooty()

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

winfo_width()

Возвращает ширину виджета в пикселях. При первом создании окна его ширина равна 1 пикселю; впоследствии она изменяется менеджером геометрии. См. также winfo_reqwidth().

winfo_x()

Возвращает координату x верхнего левого угла границы виджета (или самого виджета, если у него нет границы) относительно родительского окна.

winfo_y()

Возвращает координату y верхнего левого угла границы виджета (или самого виджета, если у него нет границы) относительно родительского окна.

info_patchlevel()

Возвращает уровень исправлений Tcl/Tk в виде именованного кортежа с теми же пятью полями, что и у sys.version_info: major, minor, micro, releaselevel и serial. Значение releaselevel — это 'alpha', 'beta' или 'final'. При преобразовании в строку версия отображается в обычной для Tcl/Tk записи, например '9.0.3' для финального выпуска или '9.1b2' для предварительного выпуска.

Добавлено в версии 3.11.

class tkinter.Wm

Миксин Wm предоставляет доступ к диспетчеру окон, позволяя приложению управлять такими параметрами, как заголовок, геометрия и значок окна верхнего уровня, способом его изменения размера и реакцией на протоколы диспетчера окон. Он включён в Tk и Toplevel, поэтому его методы доступны для каждого окна верхнего уровня. Для каждого метода существуют два равнозначных варианта написания: короткое имя и имя с префиксом wm_ (например, title() и wm_title()). См. также Диспетчер окон.

aspect(minNumer=None, minDenom=None, maxNumer=None, maxDenom=None)

Ограничивает соотношение сторон окна (отношение ширины к высоте). Если указаны все четыре аргумента, диспетчер окон поддерживает соотношение в диапазоне от minNumer/minDenom до maxNumer/maxDenom; передача пустых строк снимает все существующие ограничения. Без аргументов возвращает кортеж из четырёх текущих значений или None, если ограничение соотношения сторон не задано. wm_aspect() — псевдоним aspect().

attributes(*args, return_python_dict=False, **kwargs)

Запрашивает или задаёт специфичные для платформы атрибуты окна. Без аргументов возвращает флаги платформы и их значения; передайте return_python_dict со значением true, чтобы получить их в виде словаря. Имя отдельного параметра, например 'alpha', возвращает значение этого параметра, а параметры задаются с помощью именованных аргументов (alpha=0.5).

Доступные атрибуты различаются в зависимости от платформы. Поддерживаются всеми платформами:

alpha

Непрозрачность окна: от 0.0 (полностью прозрачное) до 1.0 (непрозрачное). Если прозрачность не поддерживается, значение остаётся равным 1.0.

appearance

Отображается ли окно в тёмном режиме в Windows и macOS: 'auto', 'light' или 'dark' (не влияет на X11).

fullscreen

Занимает ли окно весь экран и не имеет ли оно границ.

topmost

Отображается ли окно поверх всех остальных окон.

В Windows дополнительно поддерживаются:

disabled

Находится ли окно в отключённом состоянии.

toolwindow

Использует ли окно стиль окна инструментов.

transparentcolor

Цвет, который становится полностью прозрачным, или пустая строка, если такой цвет не задан.

В macOS дополнительно поддерживаются:

class

Является ли базовое окно Aqua окном nswindow или nspanel; этот атрибут можно задать только до создания окна.

modified

Состояние изменений, отображаемое кнопкой закрытия окна и значком прокси.

notify

Подпрыгивает ли значок приложения в Dock, чтобы привлечь внимание.

stylemask

Маска стиля базового окна Aqua, задаваемая списком имён битов, например titled или resizable.

tabbingid

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

tabbingmode

Можно ли открыть окно как вкладку: 'auto', 'preferred' или 'disallowed'.

titlepath

Путь к файлу, представленному значком прокси окна.

transparent

Является ли область содержимого прозрачной и отключена ли тень окна.

В X11 дополнительно поддерживаются:

type

Тип окна или список типов в порядке предпочтения, которые диспетчер окон должен использовать для интерпретации окна, например 'dialog' или 'splash'.

zoomed

Развёрнуто ли окно на весь экран.

Примечание

В Tk 8.6 был добавлен атрибут type, а в Tk 9.0 — атрибуты appearance, class, stylemask, tabbingid и tabbingmode.

В X11 изменения применяются асинхронно, поэтому запрошенное значение может ещё не отражать последний запрос. wm_attributes() — псевдоним attributes().

Изменено в версии 3.13: Теперь отдельный атрибут можно запрашивать по имени без начального -, а атрибуты можно задавать с помощью именованных аргументов. Добавлен параметр return_python_dict.

Устарело начиная с версии 3.13: Задание атрибута путём передачи имени параметра (с начальным -) и его значения в виде двух позиционных аргументов, как в w.attributes('-alpha', 0.5), устарело; вместо этого используйте именованные аргументы.

client(name=None)

Сохраняет name, которым должно быть имя узла, на котором запущено приложение, в свойстве окна WM_CLIENT_MACHINE для использования диспетчером окон или сеансов. Пустая строка удаляет свойство. Без аргумента возвращает последнее заданное имя или пустую строку. wm_client() — псевдоним client().

colormapwindows(*wlist)

Управляет свойством WM_COLORMAP_WINDOWS, которое сообщает диспетчеру окон об окнах с частными таблицами цветов. Если задан wlist, свойство перезаписывается указанными окнами (их порядок определяет приоритет при установке таблиц цветов). Без аргументов возвращает список окон, в данный момент указанных в свойстве. wm_colormapwindows() — псевдоним colormapwindows().

command(value=None)

Сохраняет value в свойстве окна WM_COMMAND для использования диспетчером окон или сеансов; это должен быть список слов команды, использованной для запуска приложения. Пустая строка удаляет свойство. Без аргумента возвращает последнее заданное значение или пустую строку. wm_command() — псевдоним command().

deiconify()

Отображает окно в обычном (не свёрнутом в значок) виде, отображая его на экране. Если окно ещё ни разу не отображалось, метод гарантирует, что при первом отображении оно будет развёрнуто. В Windows окно также поднимается на передний план и получает фокус. wm_deiconify() — псевдоним deiconify().

focusmodel(model=None)

Задаёт или запрашивает модель фокуса окна. model может быть равен 'active' (окно получает фокус ввода для себя или своих потомков, даже когда фокус находится в другом приложении) или 'passive' (окно полагается на диспетчер окон, который должен предоставить ему фокус). Без аргумента возвращает текущую модель. По умолчанию используется 'passive', что предполагает команда focus(). wm_focusmodel() — псевдоним focusmodel().

forget(window)

Убирает window с экрана, чтобы диспетчер окон больше не управлял им. После этого Toplevel обрабатывается как Frame, хотя его конфигурация -menu сохраняется, а меню появляется снова, если виджетом вновь начнут управлять. wm_forget() — псевдоним forget().

Не путать с Pack.forget().

Добавлено в версии 3.3.

frame()

Возвращает идентификатор окна, специфичный для платформы, для внешней декоративной рамки, содержащей окно, если диспетчер окон поместил его в такую рамку; в противном случае возвращает идентификатор самого окна. wm_frame() — псевдоним frame().

geometry(newGeometry=None)

Задаёт или запрашивает геометрию окна. newGeometry имеет формат =widthxheight+x+y, в котором можно опустить любые из =, widthxheight и позицию +x+y. Значения width и height задаются в пикселях (или в единицах сетки для окна, использующего сетку); позиция, перед которой стоит +, измеряется от левого или верхнего края экрана, а позиция с - — от правого или нижнего края. Смещение может быть отрицательным, как в '200x100+-9+-8', когда край окна располагается за соответствующим краем экрана. Пустая строка отменяет заданную пользователем геометрию, позволяя окну вернуться к естественному размеру. Без аргумента возвращает текущую геометрию в виде строки формата '200x200+10+10'. wm_geometry() — псевдоним geometry().

grid(baseWidth=None, baseHeight=None, widthInc=None, heightInc=None)

Управляет окном как окном с сеткой и задаёт соотношение между единицами сетки и пикселями. baseWidth и baseHeight — количество единиц сетки для внутренне запрошенного размера окна, а widthInc и heightInc — размеры горизонтальной и вертикальной единицы сетки в пикселях. Пустые строки отключают управление с использованием сетки. Без аргументов возвращает кортеж из четырёх текущих значений или None, если окно не использует сетку. wm_grid() — псевдоним grid().

Не путать с геометрическим менеджером сетки Grid.grid().

group(pathName=None)

Задаёт или запрашивает окно-лидер группы связанных окон. pathName задаёт путь к окну-лидеру группы; например, диспетчер окон может убрать с экрана все окна группы, когда окно-лидер свёрнуто в значок. Пустая строка исключает окно из всех групп. Без аргумента возвращает путь к текущему окну-лидеру группы или пустую строку. wm_group() — псевдоним group().

iconbitmap(bitmap=None, default=None)

Задаёт или запрашивает растровое изображение, которое диспетчер окон использует в качестве значка окна. bitmap задаёт растровое изображение в одном из стандартных форматов, поддерживаемых Tk; пустая строка отменяет текущий растровый значок. Без аргумента возвращает имя текущего растрового значка или пустую строку. В Windows аргумент default задаёт значок (например, файл .ico), применяемый ко всем окнам верхнего уровня, у которых нет собственного значка. wm_iconbitmap() — псевдоним iconbitmap().

iconify()

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

iconmask(bitmap=None)

Задаёт или запрашивает растровое изображение, используемое в качестве маски значка (см. iconbitmap()). В местах, где маска содержит ноль, значок не отображается; где она содержит единицу, показываются соответствующие биты растрового изображения значка. Пустая строка отменяет текущую маску. Без аргумента возвращает имя текущей маски значка или пустую строку. wm_iconmask() — псевдоним iconmask().

iconname(newName=None)

Задаёт или запрашивает имя, которое диспетчер окон отображает внутри значка окна. Без аргумента возвращает текущее имя значка или пустую строку, если имя не задано (в этом случае диспетчер окон обычно отображает заголовок окна). wm_iconname() — псевдоним iconname().

iconphoto(default=False, *images)

Задаёт значок в строке заголовка окна на основе одного или нескольких объектов PhotoImage, переданных в images. Можно передать несколько изображений разных размеров (например, 16x16 и 32x32), чтобы диспетчер окон мог выбрать подходящее. Данные изображения фиксируются в момент вызова; последующие изменения изображений не отражаются. Если default имеет значение true, значок также применяется ко всем окнам верхнего уровня, созданным в будущем. В macOS используется только первое изображение. wm_iconphoto() — псевдоним iconphoto().

Добавлено в версии 3.3.

iconposition(x=None, y=None)

Задаёт или запрашивает указание диспетчеру окон о том, где следует расположить значок окна. Пустые строки отменяют существующее указание. Без аргументов возвращает кортеж из двух текущих значений или None, если указание не задано. wm_iconposition() — псевдоним iconposition().

iconwindow(pathName=None)

Задаёт или запрашивает окно, используемое в качестве значка этого окна. Когда окно свёрнуто в значок, pathName отображается в качестве его значка и снова скрывается, когда окно развёрнуто. Пустая строка отменяет эту связь. Без аргумента возвращает путь к текущему окну-значку или пустую строку. Не все диспетчеры окон поддерживают окна-значки; на платформах, отличных от X11, это понятие не имеет смысла. wm_iconwindow() — псевдоним iconwindow().

manage(widget)

Делает widget отдельным окном верхнего уровня, которое диспетчер окон оформляет строкой заголовка и другими элементами. Можно использовать только виджеты Frame, LabelFrame и Toplevel (варианты из tkinter.ttk не поддерживаются); передача виджета любого другого типа приводит к ошибке. wm_manage() — псевдоним manage().

Добавлено в версии 3.3.

maxsize(width=None, height=None)

Задаёт или запрашивает максимально допустимые размеры окна в пикселях (или в единицах сетки для окна, использующего сетку). Диспетчер окон ограничивает размер окна значениями width и height. Без аргументов возвращает кортеж из текущих максимальных значений ширины и высоты. По умолчанию максимальный размер равен размеру экрана. wm_maxsize() — псевдоним maxsize().

minsize(width=None, height=None)

Задаёт или запрашивает минимально допустимые размеры окна в пикселях (или в единицах сетки для окна, использующего сетку). Диспетчер окон ограничивает размер окна значениями width и height, не позволяя ему стать меньше. Без аргументов возвращает кортеж из текущих минимальных значений ширины и высоты. По умолчанию минимальный размер составляет один пиксель по каждому измерению. wm_minsize() — псевдоним minsize().

overrideredirect(boolean=None)

Задаёт или запрашивает флаг перенаправления окна. Если этот флаг установлен, диспетчер окон игнорирует окно: оно не помещается в декоративную рамку, а пользователь не может управлять им с помощью обычных средств диспетчера окон. Без аргумента возвращает логическое значение, указывающее, установлен ли флаг, или None, если флаг не задавался. Флаг надёжно учитывается только при первом отображении окна или при повторном отображении после скрытия. wm_overrideredirect() — псевдоним overrideredirect().

positionfrom(who=None)

Задаёт или запрашивает источник текущего положения окна. who может быть равен 'program' или 'user' и указывает, было ли положение задано программой или пользователем; пустая строка отменяет текущий источник. Без аргумента возвращает текущий источник или пустую строку, если он не задан. Tk автоматически устанавливает источник в 'user' при вызове geometry(), если только он явно не задан как 'program'. wm_positionfrom() — псевдоним positionfrom().

protocol(name=None, func=None)

Регистрирует func в качестве обработчика протокола диспетчера окон name — атома, например 'WM_DELETE_WINDOW', 'WM_SAVE_YOURSELF' или 'WM_TAKE_FOCUS'; после этого func вызывается при каждом получении окном сообщения этого протокола от диспетчера окон. Tk устанавливает обработчик WM_DELETE_WINDOW по умолчанию, который уничтожает окно; этот метод позволяет заменить его. Если func — пустая строка, обработчик удаляется. Если указан только name, возвращает имя команды зарегистрированного обработчика или пустую строку, если обработчик не задан (обработчик WM_DELETE_WINDOW по умолчанию не возвращается); без аргументов возвращает кортеж протоколов, для которых в данный момент заданы обработчики. wm_protocol() — псевдоним protocol().

resizable(width=None, height=None)

Управляет возможностью интерактивного изменения размера окна пользователем. width и height — логические значения, определяющие, можно ли изменять ширину и высоту окна. Без аргументов возвращает кортеж из двух значений 0/1, указывающих, можно ли в данный момент изменять размер окна по каждому измерению. По умолчанию размер окна можно изменять по обоим измерениям. wm_resizable() — псевдоним resizable().

sizefrom(who=None)

Задаёт или запрашивает источник текущего размера окна. who может быть равен 'program' или 'user' и указывает, был ли размер задан программой или пользователем; пустая строка отменяет текущий источник. Без аргумента возвращает текущий источник или пустую строку, если он не задан. wm_sizefrom() — псевдоним sizefrom().

state(newstate=None)

Задаёт или запрашивает состояние окна. Без аргумента возвращает текущее состояние: одно из 'normal', 'iconic', 'withdrawn', 'icon' или, только в Windows и macOS, 'zoomed'. 'iconic' обозначает окно, свёрнутое в значок, а 'icon' — окно, служащее значком для другого окна (см. iconwindow()); состояние 'icon' нельзя задать. wm_state() — псевдоним state().

Не путать с ttk.Widget.state.

title(string=None)

Задаёт или запрашивает заголовок окна, который диспетчер окон должен отображать в строке заголовка. Без аргумента возвращает текущий заголовок. По умолчанию заголовком является имя окна. wm_title() — псевдоним title().

transient(master=None)

Помечает окно как временное (например, выпадающее меню или диалоговое окно), работающее от имени master — пути к другому окну верхнего уровня. Пустая строка снимает статус временного окна. Без аргумента возвращает путь к текущему главному окну или пустую строку. Временное окно повторяет изменения состояния главного окна и может оформляться диспетчером окон иначе; попытка сделать окно временным относительно самого себя приводит к ошибке. wm_transient() — псевдоним transient().

withdraw()

Убирает окно с экрана, скрывая его и заставляя диспетчер окон забыть о нём. Если окно ещё ни разу не отображалось, вместо этого оно отображается в скрытом состоянии. Иногда требуется скрыть окно, а затем снова отобразить его (например, с помощью deiconify()), чтобы некоторые диспетчеры окон заметили изменения атрибутов окна. wm_withdraw() — псевдоним withdraw().

class tkinter.Pack

Менеджер геометрии, который размещает виджеты, упаковывая их вдоль сторон контейнера. Миксин Pack наследуется всеми виджетами (через Widget) и предоставляет методы для управления виджетом с помощью менеджера геометрии pack. См. также раздел Управление геометрией.

Примечание

Pack, Place и Grid определяют короткие имена методов forget(), info(), slaves(), content() и propagate(). Для виджета неполные имена соответствуют версиям менеджера pack, поскольку Pack и Misc стоят перед Place и Grid в порядке разрешения методов независимо от того, какой менеджер фактически управляет виджетом; а configure()/config() настраивают параметры виджета, а не его геометрию. Чтобы обратиться к конкретному менеджеру геометрии, используйте явные методы pack_*, grid_* и place_* (а для настройки геометрии — pack, grid, place).

pack_configure(cnf={}, **kw)
pack(cnf={}, **kw)

Упаковать виджет внутри контейнера, разместив его относительно уже упакованных в него соседних виджетов. Поддерживаются следующие параметры:

side

Сторона контейнера, вдоль которой будет упакован виджет: 'top' (по умолчанию), 'bottom', 'left' или 'right'.

fill

Следует ли растянуть виджет, чтобы он заполнил отведенную ему область: 'none' (по умолчанию), 'x', 'y' или 'both'.

expand

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

anchor

Где разместить виджет в отведенной ему области, если эта область больше виджета: точка привязки, например 'n' или 'sw' (по умолчанию 'center').

ipadx, ipady

Внутренний отступ слева и справа (ipadx) или сверху и снизу (ipady) виджета, задаваемый в экранных единицах расстояния (по умолчанию 0).

padx, pady

Внешний отступ слева и справа (padx) или сверху и снизу (pady) виджета, задаваемый в экранных единицах расстояния или парой расстояний для двух сторон (по умолчанию 0).

after

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

before

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

in_

Контейнер, в котором нужно упаковать виджет; по умолчанию используется родительский виджет.

pack(), configure() и config() — псевдонимы pack_configure().

pack_forget()

Скрыть виджет и удалить его из порядка упаковки, забыв параметры его упаковки. Позже его можно упаковать повторно с помощью pack_configure(). forget() — псевдоним pack_forget(), за исключением PanedWindow, ttk.Notebook и ttk.PanedWindow, в которых предусмотрен собственный метод forget().

Не путать с Wm.forget().

pack_info()

Возвращает словарь текущих параметров упаковки виджета. info() — псевдоним pack_info().

pack_propagate()
pack_propagate(flag)

То же, что и Misc.pack_propagate(), при этом данный виджет рассматривается как контейнер: включить или отключить распространение геометрии. propagate() — псевдоним pack_propagate().

pack_slaves()

То же, что и Misc.pack_slaves(): возвращает список виджетов, упакованных в этот виджет. slaves() — псевдоним pack_slaves().

class tkinter.Place

Менеджер геометрии, который размещает виджеты в контейнере в заданных позициях и с заданными размерами. Миксин Place наследуется всеми виджетами (через Widget). См. также раздел Управление геометрией.

place_configure(cnf={}, **kw)
place(cnf={}, **kw)

Разместить виджет внутри контейнера в абсолютной или относительной позиции. Поддерживаются следующие параметры:

x, y

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

relx, rely

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

anchor

Точка виджета, которая размещается в указанной позиции: точка привязки, например 'n' или 'se' (по умолчанию 'nw').

width, height

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

relwidth, relheight

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

bordermode

Как граница контейнера влияет на размещение: 'inside' (по умолчанию) измеряет область внутри границы, 'outside' измеряет область вместе с границей, а 'ignore' использует официальную область X.

in_

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

place(), configure() и config() — псевдонимы place_configure().

place_forget()

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

place_info()

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

place_slaves()

То же, что и Misc.place_slaves(): возвращает список виджетов, размещенных в этом виджете.

class tkinter.Grid

Менеджер геометрии, который размещает виджеты в двумерной сетке из строк и столбцов внутри контейнера. Миксин Grid наследуется всеми виджетами (через Widget). См. также раздел Управление геометрией.

grid_configure(cnf={}, **kw)
grid(cnf={}, **kw)

Разместить виджет в ячейке сетки контейнера.

Не путать с Wm.grid().

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

row, column

Строка и столбец ячейки, в которой размещается виджет; отсчет начинается с 0. По умолчанию column соответствует столбцу после предыдущего виджета, размещенного в том же вызове grid_configure() (или 0), а row — следующей пустой строке.

rowspan, columnspan

Количество строк и столбцов, занимаемых виджетом (по умолчанию 1).

sticky

Как разместить или растянуть виджет, если его ячейка больше него: строка, содержащая ноль или более символов 'n', 's', 'e' и 'w', обозначающих стороны ячейки, к которым прижимается виджет. Указание одновременно 'n' и 's' (или 'e' и 'w') растягивает виджет, чтобы он заполнил ячейку по высоте (или ширине). По умолчанию используется '': виджет располагается по центру в соответствии с запрошенным размером.

ipadx, ipady

Внутренний отступ слева и справа (ipadx) или сверху и снизу (ipady) виджета, задаваемый в экранных единицах расстояния (по умолчанию 0).

padx, pady

Внешний отступ слева и справа (padx) или сверху и снизу (pady) виджета, задаваемый в экранных единицах расстояния или парой расстояний для двух сторон (по умолчанию 0).

in_

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

grid(), configure() и config() — псевдонимы grid_configure().

grid_forget()

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

grid_remove()

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

grid_info()

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

grid_bbox(column=None, row=None, col2=None, row2=None)

То же, что и Misc.grid_bbox(). bbox() — псевдоним grid_bbox(), за исключением Canvas, Listbox, Spinbox, Text, ttk.Entry и ttk.Treeview, в которых предусмотрен собственный метод bbox().

grid_columnconfigure(index, cnf={}, **kw)

То же, что и Misc.grid_columnconfigure(): запросить или задать параметры столбца сетки (например, weight, minsize, pad и uniform). columnconfigure() — псевдоним grid_columnconfigure().

grid_rowconfigure(index, cnf={}, **kw)

То же, что и Misc.grid_rowconfigure(): запросить или задать параметры строки сетки. rowconfigure() — псевдоним grid_rowconfigure().

grid_location(x, y)

То же, что и Misc.grid_location(): возвращает (column, row) ячейки, которой принадлежит пиксель с координатами x, y. location() — псевдоним grid_location().

grid_size()

То же, что и Misc.grid_size(): возвращает кортеж (columns, rows), содержащий размеры сетки. size() — псевдоним grid_size(), за исключением виджета Listbox, в котором предусмотрен собственный метод size().

grid_propagate()
grid_propagate(flag)

То же, что и Misc.grid_propagate().

grid_slaves(row=None, column=None)

То же, что и Misc.grid_slaves(): возвращает виджеты, размещенные в сетке; список можно ограничить указанными row и/или column.

class tkinter.XView

Миксин, предоставляющий интерфейс горизонтальной прокрутки, общий для таких виджетов, как Entry, Canvas, Listbox, Text и Spinbox. Метод виджета xview() регистрируется как command горизонтальной Scrollbar.

xview(*args)

Запросить или изменить горизонтальное положение области просмотра. Если аргументы не заданы, возвращает кортеж (first, last) из двух дробных чисел от 0 до 1, указывающих видимую в данный момент часть документа. В противном случае аргументы передаются команде виджета Tk xview и обычно формируются полосой прокрутки; xview_moveto() и xview_scroll() предоставляют более удобный интерфейс.

xview_moveto(fraction)

Настроить область просмотра так, чтобы доля fraction общей ширины документа находилась за пределами экрана слева. fraction — число от 0 до 1.

xview_scroll(number, what)

Сдвинуть область просмотра влево или вправо на number единиц. what может быть равно 'units' или 'pages'; отрицательное значение number прокручивает влево, положительное — вправо.

class tkinter.YView

Миксин, предоставляющий интерфейс вертикальной прокрутки, общий для таких виджетов, как Canvas, Listbox и Text. Метод виджета yview() регистрируется как command вертикальной Scrollbar.

yview(*args)

Запросить или изменить вертикальное положение области просмотра. Если аргументы не заданы, возвращает кортеж (first, last) из двух дробных чисел от 0 до 1, указывающих видимую в данный момент часть документа. В противном случае аргументы передаются команде виджета Tk yview, обычно формируемой полосой прокрутки; yview_moveto() и yview_scroll() предоставляют более удобный интерфейс.

yview_moveto(fraction)

Настроить область просмотра так, чтобы доля fraction общей высоты документа находилась за пределами экрана над верхним краем. fraction — число от 0 до 1.

yview_scroll(number, what)

Сдвинуть область просмотра вверх или вниз на number единиц. what может быть равно 'units' или 'pages'; отрицательное значение number прокручивает вверх, положительное — вниз.

class tkinter.BaseWidget(master, widgetName, cnf={}, kw={}, extra=())

Внутренний базовый класс для всех виджетов. Он наследуется от Misc и добавляет механизм создания базового виджета Tk; в коде приложений обычно используют Widget или конкретный класс виджета, а не создают экземпляр BaseWidget напрямую.

destroy()

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

class tkinter.Widget(master, widgetName, cnf={}, kw={}, extra=())

Внутренний базовый класс для стандартных виджетов. Он объединяет BaseWidget с миксинами менеджеров геометрии Pack, Place и Grid, поэтому каждым виджетом можно управлять с помощью любого из трех менеджеров геометрии. Конкретные классы виджетов (Button, Label и так далее) наследуются от Widget.

Виджеты верхнего уровня

class tkinter.Tk(screenName=None, baseName=None, className='Tk', useTk=True, sync=False, use=None)

Создаёт виджет Tk верхнего уровня, обычно являющийся главным окном приложения, и инициализирует интерпретатор Tcl для этого виджета. Каждый экземпляр имеет собственный связанный с ним интерпретатор Tcl. Наследуется от Misc и Wm.

Чтобы создать интерпретатор Tcl без инициализации подсистемы Tk, используйте вместо этого фабричную функцию Tcl().

Класс Tk обычно создаётся со всеми значениями по умолчанию. Однако в настоящее время распознаются следующие именованные аргументы:

screenName

Если задано (в виде строки), устанавливает переменную окружения DISPLAY. (Только X11)

baseName

Имя файла профиля. По умолчанию baseName определяется на основе имени программы (sys.argv[0]).

className

Имя класса виджета. Используется как имя файла профиля, а также как имя, с которым вызывается Tcl (argv0 в interp).

useTk

Если True, инициализирует подсистему Tk. Функция tkinter.Tcl() устанавливает для этого параметра значение False.

sync

Если True, выполняет все команды сервера X синхронно, чтобы об ошибках сообщалось немедленно. Может использоваться для отладки. (Только X11)

use

Указывает id окна, в которое нужно встроить приложение, вместо создания его в виде независимого окна верхнего уровня. id необходимо указывать так же, как значение параметра -use для виджетов верхнего уровня (то есть в форме, подобной возвращаемой функцией winfo_id()).

Обратите внимание, что на некоторых платформах это будет работать корректно, только если id указывает на фрейм Tk или окно верхнего уровня, для которого включён параметр -container.

Tk считывает файлы профиля с именами .className.tcl и .baseName.tcl, интерпретирует их в интерпретаторе Tcl и вызывает exec() для содержимого .className.py и .baseName.py. Путь к файлам профиля задаётся переменной окружения HOME или, если она не определена, значением os.curdir.

Примечание

В Windows создание интерпретатора Tcl (путём создания экземпляра Tk или вызова Tcl()) задаёт для процесса переменную окружения HOME, если она ещё не задана, устанавливая значение %HOMEDRIVE%%HOMEPATH% (или USERPROFILE, или c:\). Это выполняется Tcl и может повлиять на другой код, который считывает HOME.

tk

Объект приложения Tk, созданный при создании экземпляра Tk. Он предоставляет доступ к интерпретатору Tcl. У каждого виджета, связанного с одним и тем же экземпляром Tk, значение атрибута tk одинаково.

master

Объект виджета, содержащего этот виджет. Для Tk значение master равно None, поскольку это главное окно. Термины master и parent похожи и иногда используются как взаимозаменяемые имена аргументов; однако вызов winfo_parent() возвращает строку с именем виджета, тогда как master возвращает объект. Пары parent/child отражают древовидную связь, а master (или container)/content — структуру контейнера.

children

Непосредственные потомки этого виджета в виде dict, где ключами являются имена дочерних виджетов, а значениями — объекты их экземпляров.

destroy()

Уничтожает этот виджет и все виджеты-потомки, а для главного окна завершает соединение с базовым интерпретатором Tcl.

loadtk()

Завершает загрузку и инициализацию подсистемы Tk. Это требуется только в том случае, если интерпретатор был создан без Tk (например, с помощью Tcl()); при значении useTk, равном true, этот метод вызывается автоматически.

readprofile(baseName, className)

Считывает файлы профиля пользователя .className.tcl и .baseName.tcl и выполняет их в интерпретаторе Tcl, а также выполняет соответствующие файлы .className.py и .baseName.py. Этот метод вызывается во время инициализации; см. описание конструктора выше.

report_callback_exception(exc, val, tb)

Сообщает об исключении в обратном вызове. Этот метод вызывается, когда исключение выходит за пределы обратного вызова Tkinter; exc, val и tb — это тип, значение и трассировка стека исключения, возвращаемые функцией sys.exc_info(). Реализация по умолчанию выводит трассировку стека в sys.stderr. Её можно переопределить, чтобы настроить обработку ошибок, например выводить трассировку стека в диалоговом окне.

class tkinter.Toplevel(master=None, cnf={}, **kw)

Виджет Toplevel — это окно верхнего уровня, похожее на Frame, за исключением того, что его родитель в X — корневое окно экрана, а не его логический родитель. Его основное назначение — служить контейнером для диалоговых окон и других наборов виджетов; из видимых элементов у него есть только фон и необязательная трёхмерная рамка. К важным параметрам относится menu, который устанавливает Menu в качестве строки меню окна. Наследуется от BaseWidget и Wm, поэтому окном верхнего уровня управляет оконный менеджер. Полный список параметров см. на справочной странице Tk toplevel.

Классы виджетов

class tkinter.Button(master=None, cnf={}, **kw)

Виджет Button отображает текстовую строку, растровое изображение или изображение и вызывает команду, когда пользователь нажимает на него (щелчком левой кнопки мыши по кнопке или нажатием клавиши пробела, если кнопка находится в фокусе). Наследуется от Widget. Помимо стандартных параметров виджетов, кнопка принимает параметры, описанные на справочной странице Tk button, например command (обратный вызов, вызываемый при нажатии кнопки), textvariable, state и default.

invoke()

Вызывает связанную с кнопкой команду, если она есть, и возвращает её результат; если с кнопкой не связана ни одна команда, возвращает пустую строку. Если состояние кнопки — disabled, вызов игнорируется.

flash()

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

class tkinter.Canvas(master=None, cnf={}, **kw)

Виджет Canvas реализует структурированную графику. Он отображает любое количество элементов, таких как дуги, линии, овалы, многоугольники, прямоугольники, текст, растровые изображения, изображения и встроенные окна, которые можно рисовать, перемещать, перекрашивать и связывать с событиями. Наследуется от Widget, XView и YView, поэтому представление можно прокручивать по горизонтали и вертикали с помощью xview() и yview(). Полный список параметров виджета и элементов см. на странице руководства Tk canvas.

Каждому элементу при создании назначается уникальный целочисленный идентификатор и присваивается ноль или более строковых тегов. Тег — это произвольная строка, не имеющая форму целого числа; один и тот же тег может быть присвоен множеству элементов, что делает теги удобным способом группировки элементов. Специальный тег 'all' соответствует каждому элементу холста, а 'current' — элементу, находящемуся под указателем мыши и расположенного выше остальных. Большинство методов принимают аргумент tagOrId, которым может быть целочисленный идентификатор одного элемента или тег, соответствующий нулю или более элементам; как описано на странице руководства Tk canvas, тег также может быть логическим выражением из тегов, объединённых операторами &&, ||, ^, ! и скобками. Если методу, работающему с одним элементом, передан tagOrId, соответствующий нескольким элементам, обычно используется первый подходящий элемент в списке отображения.

Элементы хранятся в списке отображения, определяющем порядок рисования: элементы, расположенные в списке позже, рисуются поверх предыдущих. Новый элемент помещается в начало списка; порядок можно изменить с помощью tag_raise() и tag_lower().

create_arc(*args, **kw)
create_bitmap(*args, **kw)
create_image(*args, **kw)
create_line(*args, **kw)
create_oval(*args, **kw)
create_polygon(*args, **kw)
create_rectangle(*args, **kw)
create_text(*args, **kw)
create_window(*args, **kw)

Создают элемент соответствующего типа и возвращают его целочисленный идентификатор. Каждый метод вызывается так: create_TYPE(coord..., **options): начальные позиционные аргументы задают координаты элемента (отдельными числами, одной последовательностью чисел или парами координат), а именованные аргументы задают параметры, специфичные для элемента. Координаты и расстояния на экране можно задавать числами (интерпретируются как пиксели) или строками с суффиксом единицы измерения ('m', 'c', 'i' или 'p' для миллиметров, сантиметров, дюймов или типографских пунктов), но сохраняются и возвращаются они всегда в пикселях.

Типы элементов: arc (область в форме дуги, являющаяся частью овала и заданная двумя противоположными по диагонали углами x1, y1, x2, y2 ограничивающего прямоугольника); bitmap (двухцветное растровое изображение, расположенное в точке x, y); image (изображение Tk, расположенное в точке x, y); line (линия или кривая, проходящая через точки x1, y1, ..., xn, yn); oval (круг или эллипс, вписанный в прямоугольник x1, y1, x2, y2); polygon (замкнутый многоугольник, проходящий через точки x1, y1, ..., xn, yn); rectangle (прямоугольник с углами x1, y1, x2, y2); text (строка текста, расположенная в точке x, y); и window (дочерний виджет, встроенный в холст в точке x, y и задаваемый параметром window).

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

Стандартные параметры элемента:

fill

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

outline

Цвет контура элемента. Пустая строка отключает рисование контура.

width

Ширина контура; значение по умолчанию — 1.0. Не действует, если outline — пустая строка.

dash

Шаблон штрихов для контура, задаваемый либо последовательностью длин сегментов в пикселях, либо строкой из символов '.', ',', '-', '_' и пробела. Пустой шаблон (значение по умолчанию) задаёт сплошной контур.

dashoffset

Начальное смещение в пикселях в шаблоне dash. Игнорируется, если шаблон dash не задан.

stipple

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

outlinestipple

Растровое изображение, используемое в качестве точечного шаблона при рисовании контура. Не действует, если outline — пустая строка.

offset, outlineoffset

Смещение точечных шаблонов заливки и контура, задаваемое как 'x,y' или стороной, например 'n', 'se' или 'center'. Смещения точечных шаблонов поддерживаются только в X11.

state

Переопределяет состояние холста для этого элемента; допустимые значения: 'normal', 'disabled' или 'hidden'.

tags

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

У многих из этих параметров есть варианты active… и disabled… (например, activefill, disabledfill, activewidth, disableddash, activeoutline, disabledstipple), которые переопределяют базовый параметр, когда элемент является активным (находится под указателем мыши) или отключён.

Следующие типы элементов поддерживают дополнительные параметры.

Для элементов arc:

start

Начало углового диапазона дуги в градусах, отсчитываемых против часовой стрелки от положения «3 часа».

extent

Размер углового диапазона в градусах против часовой стрелки от start.

style

Способ рисования дуги: 'pieslice' (значение по умолчанию), 'chord' или 'arc'.

Для элементов line:

arrow

Место рисования стрелок: 'none' (значение по умолчанию), 'first', 'last' или 'both'.

arrowshape

Последовательность из трёх расстояний, задающих форму стрелок.

capstyle

Способ рисования концов линий: 'butt' (значение по умолчанию), 'projecting' или 'round'.

joinstyle

Способ рисования вершин линий: 'round' (значение по умолчанию), 'bevel' или 'miter'.

smooth

Метод сглаживания: значение false (по умолчанию) отключает сглаживание; значение 'true'/'bezier' или 'raw' задаёт рисование линии в виде кривой.

splinesteps

Число отрезков линии, аппроксимирующих каждый сплайн при включённом параметре smooth.

Для элементов polygon:

joinstyle, smooth, splinesteps

Как и для элементов line; применяется к контуру многоугольника.

Для элементов text:

text

Отображаемая строка; символы новой строки начинают новую строку текста.

font

Шрифт текста.

justify

Способ выравнивания строк: 'left' (значение по умолчанию), 'right' или 'center'.

anchor

Способ позиционирования текста относительно заданной точки; значение по умолчанию — 'center'.

width

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

angle

Угол поворота текста в градусах против часовой стрелки вокруг точки его позиционирования: от 0.0 до 360.0 (по умолчанию 0.0).

underline

Индекс символа, который нужно подчеркнуть, или -1, если подчёркивание не требуется.

Для элементов bitmap:

bitmap

Отображаемое растровое изображение.

anchor

Способ позиционирования растрового изображения относительно заданной точки.

background, foreground

Цвета пикселей растрового изображения 0 и 1; пустое значение background делает пиксели 0 прозрачными. Для обоих параметров предусмотрены варианты active… и disabled…, а для bitmap — варианты activebitmap и disabledbitmap.

Для элементов image:

image

Отображаемое изображение Tk, предварительно созданное с помощью протоколов изображений.

anchor

Способ позиционирования изображения относительно заданной точки.

Для обоих параметров предусмотрены варианты active… и disabled… (activeimage, disabledimage), используемые в активном и отключённом состояниях.

Для элементов window:

window

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

anchor

Способ позиционирования окна относительно заданной точки.

width, height

Размер, назначаемый окну; если значение равно нулю (по умолчанию), окну назначается запрошенный им размер.

Элементы oval и rectangle не имеют параметров, специфичных для типа; они используют только стандартные параметры элемента.

Примечание

В Tk 8.6 для элементов text добавлен параметр angle, а в Tk 9.0 — параметр underline.

coords(tagOrId)
coords(tagOrId, coordList, /)
coords(tagOrId, /, *coordList)

Запрашивает или изменяет координаты элемента. Если указан только tagOrId, возвращает список координат элемента с плавающей точкой, заданного параметром tagOrId (первого подходящего элемента, если найдено несколько). Если переданы новые координаты, заменяет ими координаты этого элемента; как и в методах create_*, координаты можно передать отдельными числами, одной последовательностью или парами. Возвращаемые координаты всегда указаны в пикселях независимо от использованных единиц измерения; для прямоугольников, овалов и дуг они расположены в порядке: слева, сверху, справа, снизу.

Изменено в версии 3.12: Аргументы теперь объединяются: координаты можно передавать отдельными аргументами, одной последовательностью или сгруппированными попарно, как в методах create_*.

move(tagOrId, xAmount, yAmount, /)

Перемещает каждый из элементов, заданных параметром tagOrId, в системе координат холста, прибавляя xAmount к каждой координате x и yAmount к каждой координате y элемента.

moveto(tagOrId, x='', y='')

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

Добавлено в версии 3.8.

scale(tagOrId, xOrigin, yOrigin, xScale, yScale, /)

Изменяет масштаб координат всех элементов, заданных параметром tagOrId, в системе координат холста. Каждая координата x изменяется так, чтобы её расстояние от xOrigin умножилось на xScale, а каждая координата y — так, чтобы её расстояние от yOrigin умножилось на yScale (коэффициент 1.0 оставляет координату без изменений).

delete(*tagOrIds)

Удаляет каждый из элементов, заданных аргументами tagOrIds.

dchars(tagOrId, first, /)
dchars(tagOrId, first, last, /)

Удаляет из каждого элемента, заданного параметром tagOrId, символы (для текстовых элементов) или координаты (для элементов линии и многоугольника) в диапазоне от first до last включительно; по умолчанию last равен first. Элементы, не поддерживающие индексацию, игнорируют эту операцию.

insert(tagOrId, beforeThis, string, /)

Вставляет string в каждый элемент, заданный параметром tagOrId, непосредственно перед символом или координатой с индексом beforeThis. Для элементов линии и многоугольника string должна быть допустимой последовательностью координат.

itemcget(tagOrId, option)

Возвращает текущее значение параметра конфигурации option для элемента, заданного параметром tagOrId (если найдено несколько элементов, используется первый подходящий). Работает подобно cget(), но применяется к отдельному элементу.

itemconfigure(tagOrId, cnf=None, **kw)

Запрашивает или изменяет параметры конфигурации элементов, заданных параметром tagOrId. Этот метод аналогичен configure(), но применяется к отдельным элементам, а не ко всему холсту. Если параметры не указаны, возвращает словарь с описанием текущих параметров первого подходящего элемента; в противном случае задаёт указанные параметры для всех подходящих элементов. Допустимы параметры, принимаемые соответствующим методом create_*. itemconfig() — это псевдоним itemconfigure().

type(tagOrId)

Возвращает тип элемента, заданного параметром tagOrId (если найдено несколько элементов, возвращает тип первого подходящего), например 'rectangle' или 'text', либо None, если параметру tagOrId не соответствует ни один элемент.

gettags(tagOrId, /)

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

dtag(tagOrId, /)
dtag(tagOrId, tagToDelete, /)

Удаляет тег tagToDelete (по умолчанию совпадает с tagOrId) у каждого из элементов, заданных параметром tagOrId. Элементы, которым этот тег не присвоен, не изменяются.

addtag(newtag, searchSpec, /, *args)

Добавляет тег newtag каждому элементу, выбранному спецификацией поиска searchSpec (и любыми дополнительными аргументами args). searchSpec может иметь одно из значений: 'above', 'all', 'below', 'closest', 'enclosed', 'overlapping' или 'withtag'; приведённые ниже методы addtag_* служат удобными обёртками для каждого из этих вариантов.

addtag_above(newtag, tagOrId)

Добавляет тег newtag элементу, расположенному непосредственно выше (после) tagOrId в списке отображения.

addtag_all(newtag)

Добавляет тег newtag всем элементам холста.

addtag_below(newtag, tagOrId)

Добавляет тег newtag элементу, расположенному непосредственно ниже (перед) tagOrId в списке отображения.

addtag_closest(newtag, x, y, halo=None, start=None)

Добавляет тег newtag элементу, ближайшему к точке (x, y). Если задан параметр halo, любой элемент в пределах указанного расстояния от точки считается пересекающимся с ней. Если задан параметр start (тег или идентификатор), выбирается ближайший верхний элемент, расположенный ниже start в списке отображения; это позволяет последовательно просматривать все ближайшие элементы.

addtag_enclosed(newtag, x1, y1, x2, y2)

Добавляет тег newtag каждому элементу, полностью заключённому в прямоугольник (x1, y1, x2, y2), где x1 <= x2 и y1 <= y2.

addtag_overlapping(newtag, x1, y1, x2, y2)

Добавляет тег newtag каждому элементу, пересекающемуся с прямоугольником (x1, y1, x2, y2) или полностью заключённому в нём, где x1 <= x2 и y1 <= y2.

addtag_withtag(newtag, tagOrId)

Добавляет тег newtag каждому элементу, заданному параметром tagOrId.

find(searchSpec, /, *args)

Возвращает кортеж идентификаторов всех элементов, выбранных спецификацией поиска searchSpec (и любыми дополнительными аргументами args), в порядке наложения, начиная с самого нижнего элемента. Спецификация поиска может иметь любую из форм, принимаемых методом addtag(). Приведённые ниже методы find_* представляют собой более удобные обёртки для этого метода.

find_above(tagOrId)

Возвращает кортеж с идентификатором элемента, расположенного непосредственно выше tagOrId в списке отображения.

find_all()

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

find_below(tagOrId)

Возвращает кортеж с идентификатором элемента, расположенного непосредственно ниже tagOrId в списке отображения.

find_closest(x, y, halo=None, start=None)

Возвращает кортеж с идентификатором элемента, ближайшего к точке (x, y). Параметры halo и start интерпретируются так же, как в addtag_closest().

find_enclosed(x1, y1, x2, y2)

Возвращает кортеж идентификаторов всех элементов, полностью заключённых в прямоугольник (x1, y1, x2, y2).

find_overlapping(x1, y1, x2, y2)

Возвращает кортеж идентификаторов всех элементов, пересекающихся с прямоугольником (x1, y1, x2, y2) или полностью заключённых в нём.

find_withtag(tagOrId)

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

tag_raise(tagOrId, aboveThis=None, /)

Перемещает все элементы, заданные параметром tagOrId, на новую позицию в списке отображения непосредственно выше элемента, заданного параметром aboveThis, или в начало списка, если aboveThis не указан. При перемещении нескольких элементов их взаимный порядок сохраняется. Не влияет на элементы встроенных окон, порядок наложения которых задаётся методами Misc.tkraise() и Misc.lower(). lift() и tkraise() — это псевдонимы tag_raise().

tag_lower(tagOrId, belowThis=None, /)

Перемещает все элементы, заданные параметром tagOrId, на новую позицию в списке отображения непосредственно ниже элемента, заданного параметром belowThis, или в конец списка, если belowThis не указан. При перемещении нескольких элементов их взаимный порядок сохраняется. Не влияет на элементы встроенных окон. lower() — это псевдоним tag_lower().

Примечание

В Canvas методы tkraise()/lift() и lower() изменяют порядок наложения элементов холста, перекрывая унаследованные методы Misc.tkraise()/Misc.lift() и Misc.lower(), изменяющие порядок наложения самого виджета, поэтому последние методы недоступны.

tag_bind(tagOrId, sequence=None, func=None, add=None)

Связывает функцию обратного вызова func с событием sequence для всех элементов, заданных параметром tagOrId, так что func вызывается при возникновении этого события для одного из элементов. Работает подобно Widget.bind, но применяется к элементам холста, а не ко всему виджету; связывать можно только события мыши, клавиатуры и виртуальные события. События мыши направляются текущему элементу, а события клавиатуры — элементу в фокусе (см. focus()). Если add имеет значение true, новая привязка добавляется к уже имеющимся привязкам той же последовательности, а не заменяет их. Возвращает идентификатор привязанной функции, который можно передать методу tag_unbind().

tag_unbind(tagOrId, sequence, funcid=None)

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

Изменено в версии 3.13: Если задан параметр funcid, снимается привязка только соответствующей функции обратного вызова.

bbox(tagOrId, /, *tagOrIds)

Возвращает 4-элементный кортеж (x1, y1, x2, y2), задающий приблизительную ограничивающую рамку в пикселях, охватывающую все элементы, заданные параметром tagOrId, а также любые дополнительные параметры tagOrIds. Результат может на несколько пикселей превышать фактическую ограничивающую рамку. Возвращает None, если подходящих элементов нет или подходящие элементы ничего не отображают.

Этот метод перекрывает унаследованный Misc.bbox(); для получения ограничивающей рамки сетки используйте grid_bbox().

canvasx(screenx, gridspacing=None)

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

canvasy(screeny, gridspacing=None)

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

focus()
focus(tagOrId, /)

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

Этот метод перекрывает унаследованный Misc.focus(); для фокусировки самого виджета используйте focus_set().

icursor(tagOrId, index, /)

Установить курсор вставки элементов, заданных tagOrId, непосредственно перед символом, заданным index. Элементы, не поддерживающие курсор вставки, не изменяются. Курсор отображается, только когда элемент имеет фокус, но его положение можно задать в любое время.

index(tagOrId, index, /)

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

select_adjust(tagOrId, index)

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

select_clear()

Снять выделение, если оно находится на этом холсте; в противном случае ничего не делать.

select_from(tagOrId, index)

Установить точку привязки выделения непосредственно перед символом, заданным index в элементе, заданном tagOrId. Это не изменяет само выделение, а устанавливает фиксированный конец для последующих вызовов select_to().

select_item()

Вернуть идентификатор элемента, содержащего выделение, или None, если выделение находится не на этом холсте. В отличие от find() и методов find_*, этот метод возвращает идентификатор в виде строки, а не целого числа.

select_to(tagOrId, index)

Выделить символы элемента tagOrId между точкой привязки выделения и index, включая символ с индексом index. Точка привязки задаётся последним вызовом select_adjust() или select_from().

scan_mark(x, y)

Запомнить x, y и текущее положение представления для использования в последующих вызовах scan_dragto(). Обычно этот метод связывают с нажатием кнопки мыши на виджете.

scan_dragto(x, y, gain=10)

Прокрутить холст на величину, равную gain, умноженному на разницу между x, y и координатами, переданными при последнем вызове scan_mark(). Обычно этот метод связывают с событиями перемещения мыши на виджете, создавая эффект быстрого перетаскивания холста по его окну.

postscript(cnf={}, **kw)

Создать представление части или всего холста в формате PostScript (Encapsulated PostScript, версия 3.0). Если задан параметр file или channel, данные PostScript записываются туда, а возвращается пустая строка; в противном случае они возвращаются в виде строки. По умолчанию создаётся только область, видимая в данный момент в окне, поэтому обычно необходимо сначала вызвать update() либо использовать параметры width и height. Поддерживаются, в частности, параметры colormap, colormode, file, fontmap, height, pageanchor, pageheight, pagewidth, pagex, pagey, rotate, width, x и y.

class tkinter.Checkbutton(master=None, cnf={}, **kw)

Виджет Checkbutton отображает текстовую строку, растровое изображение или изображение вместе с квадратным индикатором и при нажатии переключает логическое состояние выбора. Он обладает всеми функциями простой кнопки и, кроме того, может быть выбран: при выборе индикатор отображается с галочкой, а связанная переменная получает значение onvalue; при снятии выбора индикатор отображается пустым, а переменная получает значение offvalue. Наследуется от Widget. Помимо стандартных параметров виджетов, кнопка-флажок принимает параметры, описанные на справочной странице Tk checkbutton, например variable, onvalue, offvalue и command.

invoke()

Выполнить те же действия, что и при нажатии кнопки-флажка мышью: переключить состояние выбора кнопки и вызвать связанную команду, если она задана. Вернуть результат выполнения команды или пустую строку, если с кнопкой-флажком не связана команда. Метод ничего не делает, если состояние кнопки-флажка — disabled.

select()

Выбрать кнопку-флажок и установить для связанной переменной значение onvalue.

deselect()

Снять выбор кнопки-флажка и установить для связанной переменной значение offvalue.

toggle()

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

flash()

Несколько раз перерисовать кнопку-флажок, попеременно используя активные и обычные цвета, чтобы она мигнула. По окончании мигания кнопка-флажок остаётся в том же обычном или активном состоянии, в котором находилась при вызове метода. Метод ничего не делает, если состояние кнопки-флажка — disabled.

class tkinter.Entry(master=None, cnf={}, **kw)

Виджет Entry отображает одну строку текста и позволяет пользователю её редактировать. Наследуется от Widget и XView; поскольку поля ввода могут содержать строки, слишком длинные для отображения в окне, они поддерживают горизонтальную прокрутку с помощью xview().

Помимо стандартных параметров виджетов, поле ввода принимает параметры, описанные на справочной странице Tk entry. Среди важных параметров — textvariable (имя переменной, синхронизируемой с содержимым поля ввода), show (если задан, каждый символ отображается указанным символом, а не своим настоящим значением; полезно для ввода пароля), validate и validatecommand (вместе они позволяют функции обратного вызова принимать или отклонять изменения), а также state (одно из значений 'normal', 'disabled' или 'readonly').

Многие из приведённых ниже методов принимают аргумент index, задающий символ в строке поля ввода. Как описано на справочной странице Tk entry, index может быть числом (отсчёт начинается с 0), 'insert' (символ непосредственно после курсора вставки), 'end' (позиция сразу после последнего символа), 'anchor' (точка привязки выделения), 'sel.first' и 'sel.last' (границы выделения) или @x (символ, находящийся под точкой с координатой x x в окне). Индексы за пределами допустимого диапазона округляются до ближайшего допустимого значения.

delete(first, last=None)

Удалить символы, начиная с индекса first и до индекса last, не включая его. Если last не указан, удаляется только символ с индексом first.

get()

Вернуть текущую строку поля ввода.

insert(index, string)

Вставить string непосредственно перед символом, заданным index.

icursor(index)

Установить курсор вставки непосредственно перед символом, заданным index.

index(index)

Вернуть числовой индекс, соответствующий index.

selection_adjust(index)

Найти конец выделения, ближайший к символу с индексом index, и переместить этот конец в позицию index (включая её, но не заходя за неё); другой конец станет точкой привязки для последующих вызовов selection_to(). Если в поле ввода нет выделения, будет создано новое выделение между index и последней точкой привязки включительно. select_adjust() — это псевдоним selection_adjust().

selection_clear()

Снять выделение, если оно находится в этом виджете. Если выделение находится не в этом виджете, метод ничего не делает. select_clear() — это псевдоним selection_clear().

Примечание

Этот метод перекрывает унаследованный Misc.selection_clear(), который снимает выделение X; этот метод недоступен для Entry.

selection_from(index)

Установить точку привязки выделения непосредственно перед символом с индексом index, не изменяя выделение. select_from() — это псевдоним selection_from().

selection_present()

Вернуть True, если в поле ввода выбраны символы, и False в противном случае. select_present() — это псевдоним selection_present().

selection_range(start, end)

Выделить символы, начиная с символа с индексом start и заканчивая символом непосредственно перед end. Если end указывает на тот же символ, что и start, или на более ранний символ, выделение снимается. select_range() — это псевдоним selection_range().

selection_to(index)

Выделить символы между точкой привязки и index: если index находится перед точкой привязки, выделение охватывает символы от index до точки привязки, не включая её; если после неё — от точки привязки до index, не включая его; если позиции совпадают, ничего не происходит. Точка привязки задаётся последним вызовом selection_from() или selection_adjust(). Если в поле ввода нет выделения, новое выделение создаётся с использованием последней точки привязки. select_to() — это псевдоним selection_to().

scan_mark(x)

Запомнить x и текущее положение представления в окне поля ввода для использования в последующих вызовах scan_dragto(). Обычно метод связывают с нажатием кнопки мыши на виджете.

scan_dragto(x)

Вычислить разницу между x и значением x, переданным при последнем вызове scan_mark(), и сдвинуть представление влево или вправо на величину, в 10 раз превышающую эту разницу. Обычно метод связывают с событиями перемещения мыши, создавая эффект быстрого перетаскивания поля ввода по окну.

class tkinter.Frame(master=None, cnf={}, **kw)

Виджет Frame — это простой контейнер. Его основное назначение — служить разделителем или контейнером для сложных компоновок окон; он имеет только фон и необязательную трёхмерную рамку, которая придаёт ему вид выпуклой или утопленной панели. Наследуется от Widget. Полный список параметров см. на справочной странице Tk frame.

class tkinter.Label(master=None, cnf={}, **kw)

Виджет Label отображает неинтерактивную текстовую строку, растровое изображение или изображение. Отображаемый текст задаётся параметром text или связывается с переменной через textvariable; изображение можно показать с помощью параметра image. Весь текст должен использовать один шрифт, но может занимать несколько строк; один символ можно подчеркнуть с помощью параметра underline. Наследуется от Widget. Полный список параметров см. на справочной странице Tk label.

class tkinter.LabelFrame(master=None, cnf={}, **kw)

Виджет LabelFrame — это контейнер, обладающий функциями Frame, а также способностью отображать метку. Текст метки задаётся параметром text, а её положение — параметром labelanchor; в качестве метки можно использовать произвольный виджет, указав его в параметре labelwidget. Наследуется от Widget. Полный список параметров см. на справочной странице Tk labelframe.

class tkinter.Listbox(master=None, cnf={}, **kw)

Виджет Listbox отображает список однострочных текстовых элементов — по одному на строку, — в котором пользователь может выбрать один или несколько элементов. Способ выбора задаётся параметром selectmode, который может принимать одно из значений: browse (по умолчанию; можно выбрать не более одного элемента и перетаскивать его мышью), single (не более одного элемента), multiple (любое количество элементов, каждый из которых переключается отдельно) или extended (любое количество элементов, включая несмежные диапазоны, выбираемые щелчком и перетаскиванием). Наследуется от Widget, XView и YView, поэтому представление можно прокручивать по горизонтали и вертикали с помощью xview() и yview(). Полный список параметров см. на справочной странице Tk listbox.

Многие методы принимают аргумент index, задающий конкретный элемент. Как описано на справочной странице Tk listbox, index может быть числовым индексом (отсчёт начинается с 0 сверху), 'active' (элемент с курсором положения, задаваемым с помощью activate()), 'anchor' (точка привязки выделения, задаваемая с помощью selection_anchor()), 'end' (последний элемент; для методов index() и insert() — позиция сразу после него) или @x,y (элемент под точкой с координатами x, y в окне списка). Аргументы с именами first и last задают индексы в тех же форматах.

insert(index, *elements)

Вставить указанные elements как новые элементы непосредственно перед элементом, заданным index. Если index — 'end', новые элементы добавляются в конец списка.

delete(first, last=None)

Удалить элементы от first до last включительно. Если last не указан, по умолчанию используется first, поэтому удаляется один элемент.

get(first, last=None)

Если last не указан, вернуть содержимое элемента, заданного first, или пустую строку, если first соответствует несуществующему элементу. Если last указан, вернуть кортеж всех элементов от first до last включительно.

size()

Вернуть общее число элементов в списке.

Этот метод перекрывает унаследованный Misc.size(); для определения размера сетки используйте grid_size().

index(index)

Вернуть целочисленное значение индекса, соответствующее index, или None, если index находится за пределами допустимого диапазона. Если index — 'end', результатом будет количество элементов в списке (а не индекс последнего элемента).

bbox(index)

Вернуть кортеж (x, y, width, height), описывающий ограничивающую рамку текста элемента, заданного index, в пикселях относительно виджета. Вернуть None, если на экране не видна ни одна часть этого элемента или если index соответствует несуществующему элементу; если элемент виден лишь частично, результат всё равно описывает его полную область, включая невидимые части.

Этот метод перекрывает унаследованный Misc.bbox(); для определения ограничивающей рамки сетки используйте grid_bbox().

nearest(y)

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

see(index)

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

activate(index)

Сделать активным элемент, заданный index. Если index находится за пределами диапазона элементов, вместо него активируется ближайший элемент. Когда виджет находится в фокусе ввода, активный элемент отображается в соответствии с параметром activestyle; его индекс можно получить с помощью индекса 'active'.

curselection()

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

selection_anchor(index)

Установить точку привязки выделения на элемент, заданный index. Если index соответствует несуществующему элементу, используется ближайший элемент. Точка привязки выделения — это конец выделения, который остаётся неподвижным при выделении перетаскиванием мыши; впоследствии к нему можно обратиться с помощью индекса 'anchor'. select_anchor() — это псевдоним selection_anchor().

selection_clear(first, last=None)

Снять выделение со всех выбранных элементов в диапазоне от first до last включительно. Состояние выделения элементов за пределами этого диапазона не изменяется. select_clear() — это псевдоним selection_clear().

Примечание

Этот метод перекрывает унаследованный Misc.selection_clear(), который снимает выделение X; этот метод недоступен для Listbox.

selection_includes(index)

Вернуть True, если элемент, заданный index, выбран в данный момент, и False в противном случае. select_includes() — это псевдоним selection_includes().

selection_set(first, last=None)

Выбрать все элементы в диапазоне от first до last включительно, не изменяя состояние выделения элементов за пределами этого диапазона. select_set() — это псевдоним selection_set().

itemcget(index, option)

Вернуть текущее значение параметра конфигурации option для элемента, заданного index.

itemconfigure(index, cnf=None, **kw)

Получить или изменить параметры конфигурации элемента, заданного index. Работает аналогично configure(), но применяется к отдельному элементу, а не ко всему списку. Если параметры не указаны, возвращается словарь с описанием текущих параметров элемента; в противном случае задаются указанные параметры. Поддерживаемые параметры элемента: background, foreground, selectbackground и selectforeground. itemconfig() — это псевдоним itemconfigure().

scan_mark(x, y)

Запомнить x, y и текущее положение представления для использования в последующих вызовах scan_dragto(). Обычно этот метод связывают с нажатием кнопки мыши на виджете.

scan_dragto(x, y)

Прокрутить список на величину, в 10 раз превышающую разницу между x, y и координатами, переданными при последнем вызове scan_mark(). Обычно этот метод связывают с событиями перемещения мыши на виджете, создавая эффект быстрого перетаскивания списка по окну.

class tkinter.Menu(master=None, cnf={}, **kw)

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

Многие методы работы с элементами принимают аргумент index, который задаёт элемент для выполнения операции. Как описано на справочной странице Tk menu, index может быть числовым индексом (отсчёт начинается с 0 сверху), 'active' (текущий активный элемент), 'end' или 'last' (самый нижний элемент), 'none' (элемента нет; в Tcl записывается как {}), @y (элемент, покрывающий пиксель с координатой y y в окне меню) или шаблоном, сопоставляемым с метками элементов сверху вниз.

add(itemType, cnf={}, **kw)

Добавить новый элемент в конец меню. itemType может принимать одно из значений 'command', 'cascade', 'checkbutton', 'radiobutton' или 'separator' и определяет тип нового элемента; остальные параметры задают его настройки. Вспомогательные методы add_command(), add_cascade(), add_checkbutton(), add_radiobutton() и add_separator() вызывают этот метод с соответствующим значением itemType.

Элемент настраивается с помощью следующих параметров, хотя не каждый параметр применим ко всем типам элементов (разделитель не принимает ни один из них):

label

Текст, отображаемый в элементе.

command

Функция, вызываемая при активации элемента (элементы-команды, флажки и переключатели).

accelerator

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

underline

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

state

Одно из значений 'normal', 'active' или 'disabled'.

image

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

compound

Расположение изображения относительно текста: 'none' (по умолчанию), 'text', 'image', 'top', 'bottom', 'left' или 'right'.

bitmap

Растровое изображение, отображаемое вместо текстовой метки.

font

Шрифт для текста.

background, foreground

Цвета фона и переднего плана элемента в обычном состоянии (в macOS не учитываются).

activebackground, activeforeground

Цвета фона и переднего плана, используемые, когда элемент активен (в macOS не учитываются).

columnbreak

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

hidemargin

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

menu

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

variable

Переменная, связанная с элементом-флажком или элементом-переключателем.

onvalue, offvalue

Значения, сохраняемые в variable, когда элемент-флажок установлен или снят.

value

Значение, сохраняемое в variable, когда выбран элемент-переключатель.

indicatoron

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

selectcolor

Цвет индикатора элемента-флажка или элемента-переключателя, когда он выбран.

selectimage

Изображение, отображаемое при выборе элемента-флажка или элемента-переключателя, если также задан параметр image.

add_cascade(cnf={}, **kw)

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

add_checkbutton(cnf={}, **kw)

Добавить новый элемент-флажок в конец меню. При активации элемент-флажок переключается между значениями onvalue и offvalue, сохраняя результат в связанной с ним переменной variable, и отображает индикатор, показывающий, выбран ли он.

add_command(cnf={}, **kw)

Добавить новую команду в конец меню. Элемент-команда ведёт себя почти как кнопка: при его активации вызывается обработчик, заданный параметром command.

add_radiobutton(cnf={}, **kw)

Добавить новый элемент-переключатель в конец меню. Элементы-переключатели с одинаковой переменной variable образуют группу, в которой одновременно может быть выбран только один элемент; при выборе элемента его значение value сохраняется в переменной.

add_separator(cnf={}, **kw)

Добавить разделитель в конец меню. Разделитель отображается в виде горизонтальной линии и не может быть активирован или вызван.

insert(index, itemType, cnf={}, **kw)

Работает так же, как add(), но новый элемент вставляется непосредственно перед элементом, заданным аргументом index, а не добавляется в конец меню. itemType может принимать одно из значений 'command', 'cascade', 'checkbutton', 'radiobutton' или 'separator'. Вспомогательные методы insert_command(), insert_cascade(), insert_checkbutton(), insert_radiobutton() и insert_separator() вызывают этот метод с соответствующим значением itemType.

insert_cascade(index, cnf={}, **kw)

Вставить новый каскадный элемент перед элементом, заданным аргументом index (см. add_cascade()).

insert_checkbutton(index, cnf={}, **kw)

Вставить новый элемент-флажок перед элементом, заданным аргументом index (см. add_checkbutton()).

insert_command(index, cnf={}, **kw)

Вставить новую команду перед элементом, заданным аргументом index (см. add_command()).

insert_radiobutton(index, cnf={}, **kw)

Вставить новый элемент-переключатель перед элементом, заданным аргументом index (см. add_radiobutton()).

insert_separator(index, cnf={}, **kw)

Вставить разделитель перед элементом, заданным аргументом index (см. add_separator()).

delete(index1, index2=None)

Удалить все элементы меню от index1 до index2 включительно. Если index2 не указан, по умолчанию используется index1, поэтому удаляется один элемент. Попытки удалить элемент для отрыва меню игнорируются; вместо этого удалите его, изменив параметр tearoff.

entrycget(index, option)

Вернуть текущее значение параметра конфигурации option для элемента, заданного аргументом index.

entryconfigure(index, cnf=None, **kw)

Запросить или изменить параметры конфигурации элемента, заданного аргументом index. Этот метод аналогичен configure(), но применяется к отдельному элементу, а не ко всему меню. Если параметры не указаны, возвращается словарь с описанием текущих параметров элемента; в противном случае задаются переданные параметры. Поддерживаются параметры, принимаемые методом add() для типа данного элемента. entryconfig() — это псевдоним entryconfigure().

index(index)

Вернуть числовой индекс, соответствующий index, или None, если index не выбирает ни одного элемента.

type(index)

Вернуть тип элемента, заданного аргументом index: одно из значений 'command', 'cascade', 'checkbutton', 'radiobutton', 'separator' или 'tearoff' (для элемента отрыва меню).

activate(index)

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

invoke(index)

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

post(x, y)

Отобразить меню на экране в координатах x и y относительно корневого окна, при необходимости скорректировав их так, чтобы меню целиком помещалось на экране. Если задан параметр postcommand, он вычисляется до отображения меню.

tk_popup(x, y, entry='')

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

unpost()

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

xposition(index)

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

Добавлено в версии 3.3.

yposition(index)

Вернуть координату y самого верхнего пикселя элемента, заданного аргументом index, внутри окна меню.

class tkinter.Menubutton(master=None, cnf={}, **kw)

Виджет Menubutton отображает текстовую строку, растровое изображение или картинку и при нажатии пользователем открывает связанное Menu, заданное параметром menu. Как и Label, он может отображать текст text, переменную textvariable или изображение image, а параметр direction определяет расположение меню относительно кнопки. Наследует от Widget. Полный список параметров см. на справочной странице Tk menubutton.

class tkinter.Message(master=None, cnf={}, **kw)

Виджет Message отображает неинтерактивную текстовую строку, заданную параметром text или связанную с переменной через textvariable. В отличие от Label, он разбивает строку на несколько строк, чтобы получить заданное соотношение сторон, выбирая места переноса по границам слов; кроме того, он может выравнивать текст по левому краю, по центру или по правому краю. Наследует от Widget. Полный список параметров см. на справочной странице Tk message.

class tkinter.OptionMenu(master, variable, value, *values, **kwargs)

Вспомогательный подкласс Menubutton, отображающий всплывающее меню взаимоисключающих вариантов. variable — это Variable, значение которой синхронизируется с выбором; value — первоначальный вариант, а values — остальные элементы меню. Для именованного аргумента command можно задать обработчик, вызываемый с выбранным значением; именованный аргумент name задаёт имя виджета Tk.

destroy()

Уничтожить виджет, также удалив связанное всплывающее меню.

Изменено в версии 3.14: Добавлена поддержка именованного аргумента name.

class tkinter.PanedWindow(master=None, cnf={}, **kw)

PanedWindow — это виджет-менеджер геометрии, который размещает любое количество дочерних панелей в строке (если orient имеет значение 'horizontal') или в столбце (если orient имеет значение 'vertical'). Каждая панель содержит один виджет, а соседние панели разделены подвижным разделителем, который пользователь может перетаскивать мышью, изменяя размеры виджетов по обе стороны. Наследует от Widget.

Параметр orient задаёт направление размещения, sashwidth — ширину каждого разделителя, а sashrelief — его рельеф. Если параметр showhandle имеет значение true, на каждом разделителе рисуется небольшая ручка, за которую пользователь может потянуть. Полный список параметров см. на справочной странице Tk panedwindow.

add(child, **kw)

Добавить child в PanedWindow как новую панель, разместив её после всех существующих панелей. Именованные аргументы задают параметры управления расположением для child; ими могут быть любые параметры, принимаемые методом paneconfigure().

remove(child)

Удалить панель, содержащую child, из PanedWindow. Все параметры управления геометрией для child забываются. forget() — это псевдоним remove(). Этот метод перекрывает унаследованный метод менеджера геометрии forget(); чтобы удалить сам виджет из менеджера, используйте pack_forget(), grid_forget() или place_forget().

panes()

Вернуть кортеж управляемых PanedWindow виджетов — по одному на панель — в порядке их расположения.

panecget(child, option)

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

paneconfigure(tagOrId, cnf=None, **kw)

Запросить или изменить параметры управления панелью, содержащей виджет tagOrId. Если параметры не указаны, возвращается словарь с описанием всех доступных параметров панели; если в виде строки указано имя одного параметра, возвращается описание этого параметра; в противном случае задаются переданные параметры. Поддерживаются, в частности, следующие параметры: after и before (вставить панель после или перед другим управляемым окном), height и width (внешние размеры окна, включая рамку), minsize (минимальный размер по измерению панели), padx и pady (дополнительное пространство с каждой стороны окна), sticky (расположить или растянуть окно внутри увеличенной панели, используя строку из символов n, s, e и w), hide (скрыть панель, оставив её в списке панелей) и stretch (определяет распределение дополнительного пространства между панелями: одно из значений 'always', 'first', 'last', 'middle' или 'never'). paneconfig() — это псевдоним paneconfigure().

identify(x, y)

Определить компонент PanedWindow под точкой с координатами x и y в системе координат окна. Если точка находится над разделителем или его ручкой, результатом будет кортеж из двух элементов: индекс разделителя или ручки и слово, указывающее, находится ли точка над разделителем или ручкой, например (0, 'sash') или (2, 'handle'). Если точка находится над любой другой частью PanedWindow, результатом будет пустая строка.

sash(*args)

Запросить или изменить положение разделителей в PanedWindow. Это тонкая обёртка над подкомандой Tk sash; обычно вместо неё следует использовать вспомогательные методы sash_coord(), sash_mark() и sash_place().

sash_coord(index)

Вернуть текущую пару координат x и y для разделителя, заданного аргументом index, который должен быть целым числом от 0 до числа панелей в PanedWindow минус один. Возвращаемые координаты соответствуют верхнему левому углу области, содержащей разделитель.

sash_mark(index)

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

sash_place(index, x, y)

Разместить разделитель, заданный аргументом index, в точке с координатами x и y.

proxy(*args)

Запросить или изменить положение прокси разделителя — «призрачного» разделителя, отображаемого при перетаскивании разделителя в режиме непрозрачного изменения размера. Это тонкая обёртка над подкомандой Tk proxy; обычно вместо неё следует использовать вспомогательные методы proxy_coord(), proxy_forget() и proxy_place().

proxy_coord()

Вернуть кортеж с координатами x и y последнего положения прокси.

proxy_forget()

Убрать прокси с экрана.

proxy_place(x, y)

Разместить прокси в точке с координатами x и y.

class tkinter.Radiobutton(master=None, cnf={}, **kw)

Виджет Radiobutton отображает текстовую строку, растровое изображение или картинку вместе с ромбовидным или круглым индикатором и позволяет выбрать один вариант из нескольких. Он обладает всеми свойствами обычной кнопки и, кроме того, может быть выбран: обычно несколько переключателей используют одну переменную variable; выбор одного из них устанавливает эту переменную в значение value этого переключателя. Каждый переключатель также отслеживает переменную и автоматически выбирается или снимает выбор при её изменении. Наследует от Widget. Помимо стандартных параметров виджета переключатель принимает параметры, описанные на справочной странице Tk radiobutton, например variable, value и command.

invoke()

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

select()

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

deselect()

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

flash()

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

class tkinter.Scale(master=None, cnf={}, **kw)

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

Помимо стандартных параметров виджета шкала принимает параметры, описанные на справочной странице Tk scale, например from_, to, resolution, orient, tickinterval, variable и command. Как и в других случаях в tkinter, начальный - имени параметра Tk опускается; параметр from записывается как from_, поскольку from является ключевым словом Python.

При использовании нецелого значения resolution см. раздел числовые значения и локаль.

get()

Вернуть текущее значение шкалы. Результат будет целым числом, если параметр resolution шкалы даёт целые числа, и числом с плавающей точкой в противном случае.

set(value)

Установить значение шкалы равным value, переместив соответствующим образом ползунок. Если шкала отключена, метод ничего не делает.

coords(value=None)

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

identify(x, y)

Вернуть строку с описанием части шкалы, находящейся в точке с координатами в пикселях x, y: 'slider', 'trough1' (часть шкалы выше или левее ползунка), 'trough2' (ниже или правее ползунка) либо пустую строку, если точка не находится над ни одним из этих элементов.

class tkinter.Scrollbar(master=None, cnf={}, **kw)

Виджет Scrollbar отображает ползунок и две стрелки, позволяющие пользователю прокручивать связанный виджет, например Listbox, Text, Canvas или Entry. Он связывается с прокручиваемым виджетом: параметру xscrollcommand или yscrollcommand этого виджета задаётся метод set() полосы прокрутки, а параметру command полосы прокрутки — метод xview() или yview() прокручиваемого виджета. Наследуется от Widget.

get()

Возвращает текущие настройки полосы прокрутки в виде кортежа (first, last) из двух дробных чисел от 0 до 1, описывающих видимую в данный момент часть документа, переданную последним вызовом set().

set(first, last)

Настраивает полосу прокрутки. first и last — дробные числа от 0 до 1, задающие позиции начала и конца видимой части связанного документа. Обычно этот метод регистрируется как параметр xscrollcommand или yscrollcommand прокручиваемого виджета и вызывается этим виджетом.

activate(index=None)

Помечает элемент index (один из 'arrow1', 'slider' или 'arrow2') как активный и отображает его с учётом параметров activebackground и activerelief. Если index не указан, возвращает имя текущего активного элемента или None, если активных элементов нет.

Изменено в версии 3.5: Аргумент index теперь необязателен.

delta(deltax, deltay)

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

fraction(x, y)

Возвращает число с плавающей точкой от 0 до 1, показывающее, где точка с пиксельными координатами x, y находится в желобе: 0 соответствует верхнему или левому краю желоба, а 1 — нижнему или правому.

identify(x, y)

Возвращает имя элемента под точкой с пиксельными координатами x, y (например, 'arrow1') или пустую строку, если точка не находится ни на одном элементе полосы прокрутки.

class tkinter.Spinbox(master=None, cnf={}, **kw)

Виджет Spinbox похож на Entry, но оснащён парой кнопок со стрелками вверх и вниз, позволяющих пользователю перебирать значения из диапазона, а также вводить значение напрямую. Набор значений может представлять собой числовой диапазон, заданный параметрами from_, to и increment, или явный список строк, заданный параметром values (который имеет приоритет над диапазоном). При каждом нажатии стрелки вызывается функция обратного вызова command, если она задана; параметр wrap определяет, будет ли переход за любой конец диапазона переносить выбор на другой конец; параметр format задаёт формат числовых значений; параметр validate включает проверку введённого текста. Наследуется от Widget и XView.

Сведения о нецелочисленном значении increment см. в разделе числовые значения и локаль.

Многие методы принимают аргумент index, указывающий на символ в строке поля со счётчиком. Как описано на странице руководства Tk spinbox, index может быть числовым индексом (отсчёт начинается с 0), 'anchor' (якорная точка выделения), 'end' (позиция сразу после последнего символа), 'insert' (символ сразу после курсора вставки), 'sel.first' или 'sel.last' (концы выделения) либо @x (символ, находящийся под пикселем с координатой x x в окне).

get()

Возвращает строку поля со счётчиком.

insert(index, s)

Вставляет символы строки s перед символом, заданным параметром index.

delete(first, last=None)

Удаляет один или несколько символов поля со счётчиком. first — индекс первого удаляемого символа, а last — индекс символа сразу после последнего удаляемого. Если last не указан, удаляется один символ с индексом first.

icursor(index)

Устанавливает курсор вставки непосредственно перед символом, заданным параметром index.

index(index)

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

bbox(index)

Возвращает кортеж из четырёх целых чисел (x, y, width, height), описывающий ограничивающую рамку символа, заданного параметром index. x и y — пиксельные координаты верхнего левого угла символа относительно виджета, а width и height — его размеры в пикселях. Ограничивающая рамка может находиться за пределами видимой области окна.

Этот метод перекрывает унаследованный метод Misc.bbox(); для получения ограничивающей рамки сетки используйте grid_bbox().

identify(x, y)

Возвращает имя элемента окна в точке с пиксельными координатами x, y: одно из 'buttondown', 'buttonup', 'entry' или 'none'.

invoke(element)

Нажимает кнопку-счётчик, заданную параметром element ('buttonup' или 'buttondown'), запуская связанное с ней действие.

scan(*args)

Тонкая обёртка над подкомандой виджета Tk scan, предназначенная для быстрой прокрутки перетаскиванием: scan('mark', x) запоминает x и текущее положение, а scan('dragto', x) смещает представление относительно этой отметки. Методы scan_mark() и scan_dragto() являются обёртками для этих двух форм.

scan_mark(x)

Запоминает x и текущее положение в окне поля со счётчиком для последующего вызова scan_dragto(). Обычно этот метод связывают с нажатием кнопки мыши на виджете.

scan_dragto(x)

Смещает представление на величину, равную десятикратной разнице между x и значением x, переданным при последнем вызове scan_mark(). Обычно этот метод связывают с событиями перемещения мыши, создавая эффект быстрого перетаскивания поля со счётчиком по окну.

selection(*args)

Тонкая обёртка над подкомандой виджета Tk selection, предназначенная для изменения выделения в поле со счётчиком. Метод имеет несколько форм, определяемых первым аргументом, например selection('adjust', index), selection('clear'), selection('element', ?elem?), selection('from', index), selection('present'), selection('range', start, end) и selection('to', index). Методы selection_adjust(), selection_clear(), selection_element(), selection_from(), selection_present(), selection_range() и selection_to() являются обёртками для этих форм.

selection_adjust(index)

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

selection_clear()

Снимает выделение, если оно находится в этом виджете. Если выделение находится не в этом виджете, метод ничего не делает.

Примечание

Этот метод перекрывает унаследованный метод Misc.selection_clear(), который очищает выделение X; этот метод недоступен для Spinbox.

selection_element(element=None)

Устанавливает или возвращает текущий выбранный элемент. Если задан параметр element (одно из 'buttonup', 'buttondown' или 'none'), соответствующая кнопка-счётчик выбирается и отображается нажатой; в противном случае возвращается имя текущего выбранного элемента.

selection_from(index)

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

Добавлено в версии 3.8.

selection_present()

Возвращает True, если в поле со счётчиком есть выделенные символы, и False в противном случае.

Добавлено в версии 3.8.

selection_range(start, end)

Выделяет символы, начиная с символа с индексом start и заканчивая символом перед end. Если end указывает на тот же символ, что и start, или на предшествующий ему, выделение снимается.

Добавлено в версии 3.8.

selection_to(index)

Выделяет текст между index и якорной точкой. Если index находится перед якорной точкой, выделяется текст от index до якорной точки, не включая её; если после — от якорной точки до index, не включая его; если они совпадают, ничего не происходит. Якорная точка задаётся последним вызовом selection_from() или selection_adjust(). Если в этом виджете ничего не выделено, создаётся новое выделение с использованием последней якорной точки.

Добавлено в версии 3.8.

class tkinter.Text(master=None, cnf={}, **kw)

Виджет Text отображает и редактирует многострочный текст. Фрагментам текста можно задавать стили с помощью тегов, определённые позиции можно помечать плавающими метками, а в текст можно встраивать произвольные изображения и другие виджеты. Кроме того, виджет предоставляет неограниченный механизм отмены и повтора действий и поддерживает связанные виджеты, использующие одни и те же базовые данные. Наследуется от Widget, XView и YView, поэтому представление можно прокручивать по горизонтали и вертикали с помощью xview() и yview(). Полный список параметров см. на странице руководства Tk text.

Большинство методов принимают один или несколько аргументов index, задающих позицию в тексте. Как описано на странице руководства Tk text, индекс представляет собой строку, состоящую из базового значения и, необязательно, одного или нескольких модификаторов. Базовым значением может быть 'line.char' (строка line, символ char; нумерация строк начинается с 1, а символов в строке — с 0; 'line.end' обозначает символ новой строки в конце строки), 'end' (позиция сразу после последнего символа новой строки), имя метки, 'tag.first' или 'tag.last' (первый символ с тегом tag или позиция сразу после последнего такого символа), имя встроенного изображения или окна либо @x,y (символ, охватывающий пиксельные координаты x, y в виджете). Модификатор, например '+5 chars', '-3 lines', 'linestart', 'lineend', 'wordstart' или 'wordend', изменяет индекс относительно его базового значения; можно объединить несколько модификаторов, которые применяются слева направо, например 'insert wordstart - 1 c'.

insert(index, chars, *args)

Вставить строку chars перед символом с индексом index (если index равен 'end', то перед последним символом новой строки). По умолчанию новый текст наследует все теги, присутствующие с обеих сторон от точки вставки. Если задан аргумент args, он состоит из чередующихся значений tagList и chars: предшествующий им текст chars получает именно перечисленные теги (список тегов может быть одним именем тега или последовательностью имён), заменяя окружающие теги.

delete(index1, index2=None)

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

replace(index1, index2, chars, *args)

Заменить символы от index1 до index2, не включая символ с индексом index2, строкой chars. Это эквивалентно вызову delete(), за которым следует вызов insert() с индексом index1; аргумент args интерпретируется так же, как в insert().

Добавлено в версии 3.3.

get(index1, index2=None)

Вернуть в виде строки текст от index1 до index2, не включая символ с индексом index2. Если index2 не задан, вернуть единственный символ с индексом index1. Встроенные изображения и окна в результат не включаются.

index(index)

Вернуть позицию, соответствующую index, в канонической форме 'line.char'.

compare(index1, op, index2)

Сравнить позиции index1 и index2 с помощью оператора отношения op, который должен иметь одно из значений '<', '<=', '==', '>=', '>' или '!=', и вернуть результат в виде логического значения.

count(index1, index2, *options, return_ints=False)

Подсчитать количество элементов указанных типов между index1 и index2; результат будет отрицательным, если index1 находится после index2. Каждый из параметров options задаёт тип подсчитываемых элементов: 'chars', 'displaychars', 'displayindices', 'displaylines', 'indices', 'lines', 'xpixels' или 'ypixels' (по умолчанию, если параметр не задан, используется 'indices'). Псевдопараметр 'update' принудительно пересчитывает устаревшую информацию о компоновке перед обработкой следующих параметров. Если return_ints имеет значение true и задан только один параметр подсчёта, возвращается обычное целое число; в противном случае возвращается кортеж, содержащий по одному целому числу для каждого параметра подсчёта (или None, если результат пуст).

Добавлено в версии 3.3.

Изменено в версии 3.13: Добавлен параметр return_ints.

see(index)

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

bbox(index)

Вернуть кортеж (x, y, width, height) с ограничивающим прямоугольником видимой части символа с индексом index в пикселях или None, если этот символ не виден на экране.

Этот метод затеняет унаследованный метод Misc.bbox(); для получения ограничивающего прямоугольника сетки используйте grid_bbox().

dlineinfo(index)

Вернуть кортеж (x, y, width, height, baseline) с описанием отображаемой строки, содержащей index: первые четыре значения задают ограничивающий прямоугольник строки в пикселях, а baseline задаёт смещение базовой линии от верхнего края области. Вернуть None, если эта отображаемая строка не видна на экране.

mark_set(markName, index)

Установить метку с именем markName непосредственно перед символом с индексом index, создав метку, если она ещё не существует. Созданная таким способом метка по умолчанию имеет правую гравитацию.

mark_unset(*markNames)

Удалить все метки, имена которых указаны в markNames. Специальные метки insert и current удалить нельзя.

mark_names()

Вернуть кортеж с именами всех меток, установленных в данный момент в виджете.

mark_gravity(markName, direction=None)

Если direction не задан, вернуть гравитацию метки markName: 'left' или 'right'. В противном случае установить для неё гравитацию direction. Гравитация определяет, с какой стороны от метки появляется текст, вставленный в её позицию: метка с правой гравитацией (значение по умолчанию) остаётся справа от такого текста.

mark_next(index)

Вернуть имя первой метки в позиции index или после неё либо None, если такой метки нет. Если index — это имя метки, поиск начинается сразу после неё.

mark_previous(index)

Вернуть имя последней метки в позиции index или перед ней либо None, если такой метки нет. Если index — это имя метки, поиск начинается сразу перед ней.

tag_add(tagName, index1, *args)

Добавить тег tagName к символам от index1 до следующего индекса в args, не включая его. В args могут следовать дополнительные пары индексов для пометки других диапазонов; если в конце указан одиночный индекс, тег применяется только к символу с этим индексом.

tag_remove(tagName, index1, index2=None)

Удалить тег tagName у символов от index1 до index2, не включая символ с индексом index2 (или у единственного символа с индексом index1, если index2 не задан). Сам тег продолжает существовать, даже если он не назначен ни одному символу.

tag_delete(*tagNames)

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

tag_configure(tagName, cnf=None, **kw)

Запросить или изменить параметры конфигурации тега tagName. Этот метод аналогичен configure(), но применяется к тегу, а не ко всему виджету: если параметры не заданы, возвращается словарь с описанием текущих параметров; в противном случае устанавливаются указанные параметры. При определении тега таким способом ему также назначается приоритет выше приоритета всех существующих тегов.

Поддерживаются следующие параметры тегов, управляющие внешним видом помеченного текста:

font

Шрифт текста.

foreground

Цвет текста.

background

Цвет области за текстом.

fgstipple, bgstipple

Растровые изображения для штриховки переднего плана (текста) и фона; полноценно поддерживаются только в X11.

borderwidth

Ширина рамки вокруг текста, нарисованной в соответствии с параметром relief (по умолчанию 0).

relief

Трёхмерный вид рамки текста: 'flat' (значение по умолчанию), 'raised', 'sunken', 'ridge', 'groove' или 'solid'.

offset

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

underline

Нужно ли подчёркивать текст.

underlinefg

Цвет подчёркивания; по умолчанию совпадает с цветом текста.

overstrike

Нужно ли проводить линию через середину текста.

overstrikefg

Цвет зачёркивающей линии; по умолчанию совпадает с цветом текста.

elide

Нужно ли скрывать текст.

justify

Выравнивание первого символа отображаемой строки: 'left' (значение по умолчанию), 'right' или 'center'.

wrap

Способ переноса слишком длинных строк: 'char', 'word' или 'none'.

lmargin1, lmargin2

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

lmargincolor

Цвет области левого поля.

rmargin

Ширина правого поля в пикселях.

rmargincolor

Цвет области правого поля.

spacing1, spacing2, spacing3

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

tabs

Набор позиций табуляции в том же формате, что и параметр tabs виджета.

tabstyle

Способ интерпретации позиций табуляции: 'tabular' или 'wordprocessor'.

selectbackground, selectforeground

Цвета фона и переднего плана выделенного текста.

Примечание

В Tk 8.6 добавлены параметры lmargincolor, overstrikefg, rmargincolor, selectbackground, selectforeground и underlinefg.

tag_config() — псевдоним tag_configure().

tag_cget(tagName, option)

Вернуть текущее значение параметра конфигурации option для тега tagName.

tag_names(index=None)

Если index не задан, вернуть кортеж с именами всех тегов, определённых в виджете; в противном случае вернуть только имена тегов, применённых к символу с индексом index. Имена расположены в порядке возрастания приоритета.

tag_ranges(tagName)

Вернуть кортеж индексов, описывающих все диапазоны текста с тегом tagName. Результат содержит чередующиеся начальные и конечные индексы, поэтому элементы 2*i и 2*i+1 задают границы диапазона номер i.

tag_nextrange(tagName, index1, index2=None)

Выполнить поиск вперёд от index1 (до index2, если он задан) и найти первый диапазон символов с тегом tagName; вернуть двухэлементный кортеж с его начальным и конечным индексами либо пустой кортеж, если такого диапазона нет.

tag_prevrange(tagName, index1, index2=None)

Выполнить поиск назад от index1 (до index2, если он задан) и найти ближайший предшествующий диапазон символов с тегом tagName; вернуть двухэлементный кортеж с его начальным и конечным индексами либо пустой кортеж, если такого диапазона нет.

tag_raise(tagName, aboveThis=None)

Повысить приоритет тега tagName, установив его непосредственно выше приоритета aboveThis, или назначить ему наивысший приоритет среди всех тегов, если aboveThis не задан. Если параметры отображения перекрывающихся тегов конфликтуют, действует тег с более высоким приоритетом.

tag_lower(tagName, belowThis=None)

Понизить приоритет тега tagName, установив его непосредственно ниже приоритета belowThis, или назначить ему наинизший приоритет среди всех тегов, если belowThis не задан.

tag_bind(tagName, sequence, func, add=None)

Привязать событие sequence для символов с тегом tagName к функции обратного вызова func, чтобы func вызывалась при возникновении этого события над таким символом. Если add имеет значение true, привязка добавляется к существующим привязкам для sequence; в противном случае она заменяет их. Работает так же, как bind(), и возвращает идентификатор новой привязки.

tag_unbind(tagName, sequence, funcid=None)

Удалить привязки события sequence для символов с тегом tagName. Если задан funcid, удаляется только соответствующая привязка (возвращённая методом tag_bind()), а её функция обратного вызова снимается с регистрации.

Изменено в версии 3.13: Если задан funcid, снимается привязка только соответствующей функции обратного вызова.

image_create(index, cnf={}, **kw)

Встроить изображение в позицию index и вернуть имя, присвоенное этому экземпляру изображения; затем его можно использовать в качестве индекса или передать другим методам image_*. Параметры, задаваемые в cnf и kw, включают image (отображаемое изображение Tk), name (базовое имя экземпляра), align, padx и pady.

image_cget(index, option)

Вернуть текущее значение параметра конфигурации option для встроенного изображения в позиции index.

image_configure(index, cnf=None, **kw)

Запросить или изменить параметры конфигурации встроенного изображения в позиции index; аналогично configure(), но применяется к этому изображению.

image_names()

Вернуть кортеж с именами всех изображений, встроенных в виджет.

Примечание

Этот метод затеняет унаследованный метод Misc.image_names(), который возвращает имена всех изображений в интерпретаторе Tcl; этот метод недоступен для Text.

window_create(index, cnf={}, **kw)

Встроить окно (любой виджет) в позицию index. Параметры, задаваемые в cnf и kw, включают window (встраиваемый виджет), create (функцию обратного вызова, которая создаёт виджет по запросу), align, stretch, padx и pady. Встраиваемый виджет должен быть потомком родительского виджета текста.

window_cget(index, option)

Вернуть текущее значение параметра конфигурации option для встроенного окна в позиции index.

window_configure(index, cnf=None, **kw)

Запросить или изменить параметры конфигурации встроенного окна в позиции index; аналогично configure(), но применяется к этому окну.

window_config() — псевдоним window_configure().

window_names()

Вернуть кортеж с именами всех окон, встроенных в виджет.

edit(*args)

Низкоуровневая оболочка команды виджета Tk edit, управляющей механизмом отмены и повтора действий, а также флагом изменения; args содержит подкоманду edit и её аргументы. Представленные ниже методы edit_*() являются её простыми оболочками и обычно удобнее в использовании.

edit_modified(arg=None)

Если аргумент arg не задан, вернуть текущее состояние флага изменения — true или false; флаг автоматически устанавливается при вставке или удалении текста. В противном случае установить для флага логическое значение arg.

edit_undo()

Отменить последнее действие редактирования, то есть все операции вставки и удаления, записанные в стеке отмены после предыдущего разделителя, и переместить их в стек повтора. Если стек отмены пуст, возбуждается исключение TclError. Метод не действует, если параметр undo не имеет значения true. Начиная с Tk 9.0, возвращает кортеж индексов, задающих границы изменённых диапазонов текста.

edit_redo()

Повторить последнее отменённое действие редактирования, если с тех пор не было выполнено других изменений, и переместить его обратно в стек отмены. Если стек повтора пуст, возбуждается исключение TclError. Метод не действует, если параметр undo не имеет значения true. Начиная с Tk 9.0, возвращает кортеж индексов, задающих границы изменённых диапазонов текста.

edit_reset()

Очистить стеки отмены и повтора.

edit_separator()

Добавить разделитель в стек отмены, обозначив границу между действиями редактирования для отмены и повтора. Метод не действует, если параметр undo не имеет значения true. Если параметр autoseparators имеет значение true, разделители добавляются автоматически.

search(pattern, index, stopindex=None, forwards=None, backwards=None, exact=None, regexp=None, nocase=None, count=None, elide=None)

Выполнить поиск по шаблону pattern, начиная с index, и вернуть индекс первого символа первого совпадения либо пустую строку, если совпадений нет. Если задан stopindex, поиск заканчивается на нём; в противном случае он продолжается от одного конца текста до другого, пока не вернётся к начальной позиции. Направление и режим поиска управляются следующими логическими именованными параметрами: forwards или backwards задают направление (по умолчанию поиск выполняется вперёд); exact (значение по умолчанию) или regexp задают поиск буквального совпадения или совпадения с регулярным выражением; nocase включает поиск без учёта регистра; elide включает поиск также и в скрытом тексте. Если count — это Variable, в него записывается количество позиций индексов в совпадении.

scan_mark(x, y)

Сохранить значения x, y и текущего представления для последующих вызовов scan_dragto(). Обычно этот метод привязывают к нажатию кнопки мыши в виджете.

scan_dragto(x, y)

Прокрутить виджет на расстояние, в 10 раз превышающее разницу между x, y и координатами, переданными при последнем вызове scan_mark(). Обычно этот метод привязывают к событиям движения мыши, создавая эффект быстрого перетаскивания текста по окну.

debug(boolean=None)

Если boolean не задан, вернуть информацию о том, включена ли проверка внутренней согласованности структуры данных B-дерева. В противном случае включить или отключить её. Этот параметр общий для всех текстовых виджетов и может заметно замедлить работу виджетов с большим объёмом текста.

dump(index1, index2=None, command=None, **kw)

Вернуть содержимое виджета от index1 до index2, не включая символ с индексом index2 (или только сегмент с индексом index1, если index2 не задан), а также сведения о тексте, метках, тегах, изображениях и окнах. Результат представляет собой список троек (key, value, index), где key принимает одно из значений 'text', 'mark', 'tagon', 'tagoff', 'image' или 'window'. По умолчанию возвращаются все типы данных; если для любого из именованных параметров all, text, mark, tag, image или window задано значение true, в результат включаются только выбранные типы. Если задан command, она вызывается для каждой тройки с тремя её значениями в качестве аргументов, а метод ничего не возвращает.

peer_create(newPathName, cnf={}, **kw)

Создать связанный текстовый виджет с именем пути newPathName, который использует те же базовые данные, что и этот виджет (текст, метки, теги, изображения и стек отмены). Изменения, внесённые через любой связанный виджет, отражаются во всех остальных. По умолчанию связанный виджет охватывает те же строки, что и этот; это можно изменить, указав стандартные параметры текста, в том числе startline и endline.

Добавлено в версии 3.3.

peer_names()

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

Добавлено в версии 3.3.

yview_pickplace(*what)

Настроить представление так, чтобы указанное в what место было видно. Это устаревший эквивалент метода see(), который следует использовать вместо него.

Классы переменных

class tkinter.Variable(master=None, value=None, name=None)

Базовый класс для обёрток переменных Tk. Переменная Tk — это значение, хранящееся в интерпретаторе Tcl, которое можно связать с виджетами с помощью параметров variable или textvariable (см. Связывание переменных с виджетами), чтобы изменения передавались в обоих направлениях: при обновлении переменной обновляются все связанные с ней виджеты, а при редактировании пользователем такого виджета обновляется переменная.

master — это виджет, интерпретатор Tcl которого владеет переменной; если он не указан, используется корневое окно по умолчанию. value — начальное значение; если оно не указано, используется значение по умолчанию, зависящее от типа. name — имя переменной в интерпретаторе Tcl; если оно не указано, генерируется уникальное имя вида 'PY_VARnum'. Если name совпадает с именем существующей переменной, а value не указано, сохраняется существующее значение.

В большинстве случаев следует использовать один из приведённых ниже типизированных подклассов — StringVar, IntVar, DoubleVar или BooleanVar, — а не использовать Variable напрямую.

Примечание

При сборке мусора для Variable её переменная Tcl удаляется. Пока виджет связан с ней, храните ссылку на переменную, например, сохраняя её в атрибуте, а не в локальной переменной. Иначе Tk повторно создаст переменную Tcl, чтобы виджет продолжал работать, но больше никогда её не удалит, что приведёт к утечке одной переменной Tcl для каждой отброшенной обёртки.

Изменено в версии 3.10: Две переменные теперь считаются равными (==), только если у них одинаковые имена, они принадлежат к одному классу и относятся к одному интерпретатору Tcl.

get()

Возвращает текущее значение переменной. Для базового класса значение возвращается в виде строки; типизированные подклассы преобразуют его в соответствующий тип Python.

set(value)

Задаёт переменной значение value. initialize() — это псевдоним set().

Добавлено в версии 3.3: Вариант написания initialize.

trace_add(mode, callback)

Регистрирует callback, который будет вызван при обращении к переменной в соответствии с mode. mode — одна из строк 'array', 'read', 'write' или 'unset' либо список или кортеж таких строк.

При срабатывании callback вызывается с тремя аргументами: именем переменной Tcl, индексом (или пустой строкой, если переменная не является элементом массива) и mode, вызвавшим этот вызов.

Возвращает внутреннее имя зарегистрированного обратного вызова, которое можно передать в trace_remove().

Добавлено в версии 3.6.

trace_remove(mode, cbname)

Удаляет обратный вызов отслеживания переменной. mode должен совпадать с mode, переданным в trace_add(), а cbname — это имя обратного вызова, возвращённое методом trace_add().

Добавлено в версии 3.6.

trace_info()

Возвращает список пар (modes, cbname), описывающих все текущие трассировки переменной; modes — это кортеж строк режимов, а cbname — внутреннее имя обратного вызова.

Добавлено в версии 3.6.

trace_variable(mode, callback)

Регистрирует callback, который будет вызван при обращении к переменной в соответствии с mode. mode — одна из строк 'r', 'w' или 'u', соответствующих чтению, записи или удалению. Возвращает внутреннее имя зарегистрированного обратного вызова. trace() — это псевдоним trace_variable().

Устарело с версии 3.6: Вместо этого используйте trace_add(). Этот метод является обёрткой для функции Tcl, удалённой в Tcl 9.0.

trace_vdelete(mode, cbname)

Удаляет обратный вызов отслеживания с именем cbname, зарегистрированный для mode с помощью trace_variable().

Устарело с версии 3.6: Вместо этого используйте trace_remove(). Этот метод является обёрткой для функции Tcl, удалённой в Tcl 9.0.

trace_vinfo()

Возвращает список пар (mode, cbname) для всех трассировок, установленных для переменной с помощью trace_variable().

Устарело с версии 3.6: Вместо этого используйте trace_info(). Этот метод является обёрткой для функции Tcl, удалённой в Tcl 9.0.

class tkinter.StringVar(master=None, value=None, name=None)

Подкласс Variable, содержащий строку. Значение по умолчанию — ''.

get()

Возвращает значение переменной в виде str.

class tkinter.IntVar(master=None, value=None, name=None)

Подкласс Variable, содержащий целое число. Значение по умолчанию — 0.

get()

Возвращает значение переменной в виде int.

class tkinter.DoubleVar(master=None, value=None, name=None)

Подкласс Variable, содержащий число с плавающей точкой. Значение по умолчанию — 0.0.

get()

Возвращает значение переменной в виде float.

Примечание

Число с плавающей точкой всегда разбирается с точкой (.) в качестве десятичного разделителя, однако Spinbox, Scale и ttk.Spinbox форматируют его с учётом локали LC_NUMERIC. В локали, где используется запятая, они формируют значение, которое get() не может прочитать, вызывая TclError. Чтобы избежать этого, установите LC_NUMERIC в локаль, использующую точку (например, 'C').

class tkinter.BooleanVar(master=None, value=None, name=None)

Подкласс Variable, содержащий логическое значение. Значение по умолчанию — False.

get()

Возвращает значение переменной в виде bool. Вызывает ValueError, если значение невозможно интерпретировать как логическое.

set(value)

Задаёт переменной значение value, преобразуя его в логическое. initialize() — это псевдоним set().

Добавлено в версии 3.3: Вариант написания initialize.

Классы изображений

class tkinter.Image(imgtype, name=None, cnf={}, master=None, **kw)

Базовый класс для изображений Tk. imgtype — это тип изображения Tk: 'photo' или 'bitmap'. Изображение — это именованный объект, который можно отображать в виджетах с помощью параметра image; удаление всех ссылок на объект Image приводит к удалению соответствующего изображения Tk. Обычно создают PhotoImage или BitmapImage, а не экземпляр Image напрямую.

Параметры конфигурации изображения задаются с помощью cnf и kw; позднее их можно получить и изменить с помощью протокола отображения (используя image[key]) или метода configure().

configure(**kw)

Изменяет один или несколько параметров конфигурации изображения. Допустимые параметры зависят от типа изображения; см. PhotoImage и BitmapImage. config() — это псевдоним configure().

height()

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

width()

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

type()

Возвращает тип изображения, то есть значение imgtype, с которым оно было создано (например, 'photo' или 'bitmap').

class tkinter.PhotoImage(name=None, cnf={}, master=None, **kw)

Полноцветное изображение (тип изображения Tk photo), хранящееся внутри системы с различной степенью прозрачности для каждого пикселя. Оно может читать и записывать файлы GIF, PPM/PGM и (в Tk 8.6 и новее) PNG, читать файлы SVG (в Tk 9.0 и новее) и отображаться в виджетах. Наследуется от Image.

Параметры конфигурации включают data (содержимое изображения в виде строки), file (имя файла, из которого считывается содержимое), format (имя обработчика формата файла), width и height (размер изображения, используемый при его поэтапном создании), gamma и palette.

blank()

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

cget(option)

Возвращает текущее значение параметра конфигурации option.

copy(*, from_coords=None, zoom=None, subsample=None)

Возвращает новый объект PhotoImage, содержащий копию этого изображения.

from_coords задаёт прямоугольную область исходного изображения для копирования. Это должен быть кортеж или список из 1–4 целых чисел (x1, y1, x2, y2). (x1, y1) и (x2, y2) задают противоположные углы прямоугольника по диагонали. Если x2 и y2 не указаны, по умолчанию используются координаты нижнего правого угла исходного изображения. Копируются пиксели, расположенные на левой и верхней границах прямоугольника, но не на нижней и правой. Если from_coords не задан, копируется всё исходное изображение.

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

Изменено в версии 3.13: Добавлены параметры from_coords, zoom и subsample.

copy_replace(sourceImage, *, from_coords=None, to=None, shrink=False, zoom=None, subsample=None, compositingrule=None)

Копирует область из sourceImage (который должен быть объектом PhotoImage) в это изображение, при необходимости увеличивая или уменьшая пиксели. Если параметры не заданы, в это изображение копируется всё содержимое sourceImage, начиная с координат (0, 0).

from_coords задаёт прямоугольную область исходного изображения для копирования, как и в методе copy().

to задаёт прямоугольную область целевого изображения, которая будет затронута. Это должен быть кортеж или список из 1–4 целых чисел (x1, y1, x2, y2). Если x2 и y2 не указаны, по умолчанию используются координаты (x1, y1) плюс размер исходной области (после уменьшения или увеличения, если они заданы). Если x2 и y2 указаны, исходная область при необходимости повторяется плиткой, чтобы заполнить целевую область.

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

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

compositingrule задаёт способ объединения прозрачных пикселей исходного изображения с целевым изображением. При значении 'overlay' (по умолчанию) прежнее содержимое целевого изображения остаётся видимым, как если бы исходное изображение было напечатано на прозрачной плёнке и помещено поверх целевого. При значении 'set' прежнее содержимое целевого изображения отбрасывается, и исходное изображение используется без изменений.

Добавлено в версии 3.13.

data(format=None, *, from_coords=None, background=None, grayscale=False)

Возвращает данные изображения.

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

from_coords задаёт прямоугольную область изображения, которую нужно вернуть. Это должен быть кортеж или список из 1–4 целых чисел (x1, y1, x2, y2). Если заданы только x1 и y1, область простирается от (x1, y1) до нижнего правого угла изображения. Если указаны все четыре координаты, они задают противоположные углы области по диагонали; (x1, y1) включается, а (x2, y2) исключается. Если from_coords не задан, возвращается всё изображение.

Если задан background, данные не содержат сведений о прозрачности; цвет всех прозрачных пикселей заменяется указанным цветом.

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

Добавлено в версии 3.13.

get(x, y)

Возвращает цвет пикселя с координатами (x, y) в виде кортежа (r, g, b) из трёх целых чисел от 0 до 255, представляющих соответственно красную, зелёную и синюю составляющие.

put(data, to=None)

Задаёт цвета пикселям изображения. Цвета передаются в data, который должен быть строкой или вложенной последовательностью горизонтальных строк цветов пикселей (например, "{red green} {blue yellow}").

to задаёт координаты области изображения, в которую копируются данные. Это должен быть кортеж или список из 2 или 4 целых чисел (x1, y1) или (x1, y1, x2, y2), задающих верхний левый угол и, при необходимости, нижний правый угол области. По умолчанию используется позиция (0, 0).

read(filename, format=None, *, from_coords=None, to=None, shrink=False)

Считывает данные изображения из файла с именем filename в изображение.

format задаёт формат данных изображения в файле.

from_coords задаёт прямоугольную область данных файла изображения, которую нужно скопировать в целевое изображение. Это должен быть кортеж или список из 1–4 целых чисел (x1, y1, x2, y2). Если заданы только x1 и y1, область простирается от (x1, y1) до нижнего правого угла изображения в файле. Если указаны все четыре координаты, они задают противоположные углы области по диагонали. Если from_coords не задан, считывается всё изображение из файла.

to задаёт координаты верхнего левого угла области изображения, в которую считываются данные. По умолчанию используется (0, 0).

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

Добавлено в версии 3.13.

subsample(x, y='', *, from_coords=None)

Возвращает новый объект PhotoImage на основе этого изображения, используя каждый x-й пиксель по оси X и каждый y-й пиксель по оси Y. Если y не задан, по умолчанию используется значение x.

from_coords задаёт прямоугольную область исходного изображения для копирования, как и в методе copy().

Изменено в версии 3.13: Добавлен параметр from_coords.

transparency_get(x, y)

Возвращает True, если пиксель с координатами (x, y) полностью прозрачен, и False в противном случае.

Добавлено в версии 3.8.

transparency_set(x, y, boolean)

Делает пиксель с координатами (x, y) полностью прозрачным, если boolean имеет значение true, и полностью непрозрачным в противном случае.

Добавлено в версии 3.8.

write(filename, format=None, from_coords=None, *, background=None, grayscale=False)

Записывает данные изображения в файл с именем filename.

format задаёт имя обработчика формата файла изображения. Если он не указан, формат определяется по расширению файла.

from_coords задаёт прямоугольную область изображения для записи. Это должен быть кортеж или список из 1–4 целых чисел (x1, y1, x2, y2). Если заданы только x1 и y1, область простирается от (x1, y1) до нижнего правого угла изображения. Если указаны все четыре координаты, они задают противоположные углы области по диагонали. Если from_coords не задан, записывается всё изображение.

Если задан background, данные не содержат сведений о прозрачности; цвет всех прозрачных пикселей заменяется указанным цветом.

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

Изменено в версии 3.13: Добавлены параметры background и grayscale.

zoom(x, y='', *, from_coords=None)

Возвращает новый объект PhotoImage, в котором это изображение увеличено в x раз по оси X и в y раз по оси Y. Если y не задан, по умолчанию используется значение x.

from_coords задаёт прямоугольную область исходного изображения для копирования, как и в методе copy().

Изменено в версии 3.13: Добавлен параметр from_coords.

class tkinter.BitmapImage(name=None, cnf={}, master=None, **kw)

Двухцветное изображение (тип изображения Tk bitmap), созданное на основе растрового изображения X11. Каждый пиксель отображается цветом переднего плана, цветом фона или не отображается вовсе (создавая эффект прозрачности). Наследуется от Image.

Параметры конфигурации: data или file (исходное растровое изображение в виде строки в формате растрового изображения X11 либо имя файла в этом формате), maskdata или maskfile (растровая маска в том же формате), а также foreground и background (два цвета). В тех местах, где значение маски равно нулю, изображение ничего не отображает; в остальных местах пиксели, равные единице в исходном изображении, отображаются цветом переднего плана, а пиксели, равные нулю, — цветом фона. Если для background задана пустая строка, пиксели фона прозрачны.

У BitmapImage нет собственных методов, кроме унаследованных от Image.

Другие классы

class tkinter.Event

Контейнер для атрибутов события, передаваемого обратному вызову, привязанному с помощью Misc.bind(). Экземпляр Event имеет следующие атрибуты, каждый из которых соответствует полю базового события Tk; в зависимости от типа события некоторым атрибутам может быть присвоена строка '??', указывающая на то, что они не имеют значения. См. раздел Привязки и события.

serial

Порядковый номер события.

num

Кнопка мыши, которую нажали или отпустили (для событий кнопок).

focus

Имеет ли окно фокус (для событий Enter и Leave).

height
width

Новые высота и ширина окна (для событий Configure и Expose).

keycode

Код клавиши, которую нажали или отпустили.

state

Состояние события в виде числа (для большинства событий) или строки (для событий Visibility).

time

Метка времени события в миллисекундах.

x
y

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

x_root
y_root

Положение указателя относительно верхнего левого угла экрана в пикселях.

char

Введённый символ в виде строки (для событий клавиш).

send_event

True, если событие было отправлено другим приложением.

keysym

Символическое имя клавиши, которую нажали или отпустили.

keysym_num

Числовое значение keysym.

type

EventType события.

widget

Виджет, в котором произошло событие.

delta

Величина поворота колёсика мыши (для событий MouseWheel).

class tkinter.EventType(*values)

Перечисление enum.StrEnum типов событий Tk, используемое в качестве значения Event.type. Среди его элементов есть KeyPress, KeyRelease, ButtonPress, ButtonRelease, Motion, Enter, Leave, FocusIn, FocusOut, Configure, Map, Unmap, Expose, Destroy и MouseWheel.

Добавлено в версии 3.6.

class tkinter.CallWrapper(func, subst, widget)

Внутренняя вспомогательная обёртка, которая позволяет вызывать обратный вызов Python из Tcl. func — функция Python, subst — необязательная функция предварительной обработки аргументов Tcl, а widget — виджет, используемый для сообщения об ошибках. Экземпляры создаются автоматически методом Misc.register(); этот класс обычно не используется напрямую.

Функции уровня модуля

tkinter.Tcl(screenName=None, baseName=None, className='Tk', useTk=False)

Функция Tcl() — это фабричная функция, создающая объект, похожий на объект, создаваемый классом Tk, но без инициализации подсистемы Tk. Чаще всего она полезна при управлении интерпретатором Tcl в среде, где не требуется создавать лишние окна верхнего уровня или это невозможно (например, в системах Unix/Linux без X-сервера). Для объекта, созданного объектом Tcl(), можно создать окно Toplevel (и инициализировать подсистему Tk), вызвав его метод loadtk().

tkinter.NoDefaultRoot()

Запрещает создание неявного корневого окна по умолчанию. После этого tkinter больше не создаёт автоматически общий корень по умолчанию, а операции, которым он необходим, — например, создание виджета без явно заданного master, — вызывают исключение RuntimeError. Вызывайте эту функцию в начале работы крупных приложений, чтобы явно задавать корневое окно.

tkinter.mainloop(n=0)

Запускает главный цикл обработки событий Tk для корневого окна по умолчанию до уничтожения всех окон. Эквивалентно вызову Misc.mainloop() для корневого окна по умолчанию.

tkinter.getboolean(s)

Преобразует логическую строку Tcl s (одну из '1', 'true', 'yes', 'on' и подобных им либо их ложных эквивалентов) в значение Python типа bool. При недопустимом значении вызывает исключение TclError.

tkinter.getdouble(s)

Преобразует s в число с плавающей точкой. Это встроенная функция float.

tkinter.getint(s)

Преобразует s в целое число. Это встроенная функция int.

tkinter.image_names()

Возвращает имена всех существующих изображений в интерпретаторе корневого окна по умолчанию.

tkinter.image_types()

Возвращает доступные типы изображений (например, 'photo' и 'bitmap') в интерпретаторе корневого окна по умолчанию.

Обработчики файлов

Tk позволяет регистрировать и отменять регистрацию функции обратного вызова, которая вызывается из главного цикла Tk, когда для файлового дескриптора становится возможен ввод-вывод. Для каждого файлового дескриптора можно зарегистрировать только один обработчик. Пример кода:

import tkinter
widget = tkinter.Tk()
mask = tkinter.READABLE | tkinter.WRITABLE
widget.tk.createfilehandler(file, mask, callback)
...
widget.tk.deletefilehandler(file)

Эта возможность недоступна в Windows.

Поскольку неизвестно, сколько байтов доступно для чтения, возможно, не стоит использовать методы BufferedIOBase или TextIOBase read() и readline(), поскольку они будут настаивать на чтении заранее заданного количества байтов. Для сокетов подойдут методы recv() или recvfrom(); для остальных файлов используйте чтение без буферизации или os.read(file.fileno(), maxbytecount).

Widget.tk.createfilehandler(file, mask, func)

Регистрирует функцию обратного вызова обработчика файла func. Аргумент file может быть объектом с методом fileno() (например, объектом файла или сокета) либо целочисленным файловым дескриптором. Аргумент mask представляет собой побитовое ИЛИ любых трёх приведённых ниже констант. Функция обратного вызова вызывается следующим образом:

callback(file, mask)
Widget.tk.deletefilehandler(file)

Отменяет регистрацию обработчика файла.

tkinter.READABLE
tkinter.WRITABLE
tkinter.EXCEPTION

Константы, используемые в аргументах mask.

Константы

Следующие символические константы доступны как в пространстве имён tkinter, так и в пространстве имён tkinter.constants.

tkinter.TRUE
tkinter.YES
tkinter.ON

Истинные значения, равные целому числу 1.

tkinter.FALSE
tkinter.NO
tkinter.OFF

Ложные значения, равные целому числу 0.

tkinter.N
tkinter.S
tkinter.E
tkinter.W
tkinter.NE
tkinter.NW
tkinter.SE
tkinter.SW
tkinter.NS
tkinter.EW
tkinter.NSEW
tkinter.CENTER

Стороны света ('n', 's', 'e', 'w', а также диагонали и края) и CENTER ('center'). Используются как значения параметров anchor и sticky, а также методами, например Misc.grid_anchor().

tkinter.LEFT
tkinter.RIGHT
tkinter.TOP
tkinter.BOTTOM

Стороны для параметра side менеджера компоновки pack (см. Pack.pack_configure()).

tkinter.X
tkinter.Y
tkinter.BOTH
tkinter.NONE

Значения параметра fill менеджера компоновки pack: 'x', 'y', 'both' или 'none'.

tkinter.RAISED
tkinter.SUNKEN
tkinter.FLAT
tkinter.RIDGE
tkinter.GROOVE
tkinter.SOLID

Значения параметра relief, управляющего трёхмерной рамкой виджета.

tkinter.HORIZONTAL
tkinter.VERTICAL

Значения параметра orient таких виджетов, как Scale, Scrollbar и PanedWindow.

tkinter.CHAR
tkinter.WORD

Значения параметра wrap виджета Text, определяющие перенос строк по границам символов или слов.

tkinter.BASELINE

Значение выравнивания текста 'baseline'.

tkinter.INSIDE
tkinter.OUTSIDE

Значения параметра bordermode менеджера компоновки place (см. Place.place_configure()).

tkinter.INSERT
tkinter.CURRENT
tkinter.END
tkinter.ANCHOR
tkinter.SEL
tkinter.SEL_FIRST
tkinter.SEL_LAST

Символические индексы, используемые виджетами Text, Entry, Listbox и Canvas, например 'insert' (курсор вставки), 'current', 'end', 'anchor' и границы выделения ('sel.first' и 'sel.last').

tkinter.ALL

Специальный тег 'all', соответствующий каждому элементу виджета Canvas или каждому символу виджета Text (например, canvas.delete(ALL)).

tkinter.NORMAL
tkinter.DISABLED
tkinter.ACTIVE
tkinter.HIDDEN

Значения параметра state различных виджетов и элементов.

tkinter.CASCADE
tkinter.CHECKBUTTON
tkinter.COMMAND
tkinter.RADIOBUTTON
tkinter.SEPARATOR

Типы пунктов меню, используемые в качестве аргумента itemType методов Menu.add() и Menu.insert().

tkinter.SINGLE
tkinter.BROWSE
tkinter.MULTIPLE
tkinter.EXTENDED

Значения параметра selectmode виджета Listbox.

tkinter.PIESLICE
tkinter.CHORD
tkinter.ARC

Значения параметра style элементов дуги виджета Canvas.

tkinter.BUTT
tkinter.PROJECTING
tkinter.ROUND
tkinter.BEVEL
tkinter.MITER

Значения параметров capstyle ('butt', 'projecting', 'round') и joinstyle ('round', 'bevel', 'miter') элементов-линий виджета Canvas.

tkinter.FIRST
tkinter.LAST

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

tkinter.MOVETO
tkinter.SCROLL

Первый аргумент, передаваемый виджетом Scrollbar методу XView.xview() или YView.yview() прокручиваемого виджета.

tkinter.UNITS
tkinter.PAGES

Значения аргумента what методов XView.xview_scroll() и YView.yview_scroll().

tkinter.UNDERLINE
tkinter.NUMERIC
tkinter.DOTBOX

Другие значения параметров: 'underline', 'numeric' и 'dotbox'.

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

Spec-Zone.ru

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