tkinter.md
1> **Источник:** https://python-all.ru/3.16/library/tkinter.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `tkinter` – интерфейс Python к Tcl/Tk89**Исходный код:** [Lib/tkinter/\_\_init\_\_.py](https://python-all.ru/src/main/Lib/tkinter/__init__.py)1011---1213Пакет `tkinter` («Tk interface») – это стандартный интерфейс Python к набору инструментов GUI Tcl/Tk. Как Tk, так и `tkinter` доступны на большинстве Unix-платформ, включая macOS, а также в Windows.1415Запуск `python -m tkinter` из командной строки должен открыть окно, демонстрирующее простой интерфейс Tk, показывая, что `tkinter` корректно установлен в системе, а также отображая версию Tcl/Tk, чтобы можно было прочитать документацию Tcl/Tk, соответствующую этой версии.1617Tkinter поддерживает различные версии Tcl/Tk, собранные как с поддержкой потоков, так и без неё. Минимальная поддерживаемая версия – Tcl/Tk 8.5.12; официальный дистрибутив Python поставляется с Tcl/Tk 9.0. Обратитесь к исходному коду модуля [`_tkinter`](https://python-all.ru/3.16/library/tkinter.html#module-_tkinter) для получения дополнительной информации о поддерживаемых версиях.1819Изменено в версии 3.11: Поддержка версий Tcl/Tk старше 8.5.12 удалена.2021Tkinter – не тонкая обёртка; он добавляет значительную долю собственной логики, чтобы сделать работу более питоничной. Данная документация сосредоточена на этих дополнениях и изменениях, а за неизменными деталями отсылает к официальной документации Tcl/Tk.2223> **Примечание**24>25> Tcl/Tk 8.5 (2007) представил современный набор тематических компонентов пользовательского интерфейса вместе с новым API для их использования. Как старый, так и новый API всё ещё доступны. Большинство онлайн-документации всё ещё использует старый API и может быть безнадёжно устаревшей.2627Это [опциональный модуль](https://python-all.ru/3.16/glossary.html#term-optional-module). Если его нет в вашей копии CPython, обратитесь к документации от вашего дистрибьютора (то есть того, кто предоставил вам Python). Если вы дистрибьютор, обратитесь к [требованиям к опциональным модулям](https://python-all.ru/3.16/using/configure.html#optional-module-requirements).2829> **См. также**30>31> - **[TkDocs](https://python-all.ru/3.16/library/tkinter.html)**32>33> Обширное руководство по созданию пользовательских интерфейсов с помощью Tkinter. Объясняет ключевые концепции и иллюстрирует рекомендуемые подходы с использованием современного API.34> - **[Справочник по Tkinter 8.5: GUI для Python](https://python-all.ru/3.16/library/tkinter.html)**35>36> Справочная документация по Tkinter 8.5 с подробным описанием доступных классов, методов и опций.37>38> Ресурсы по Tcl/Tk:39>40> - **[Команды Tk](https://python-all.ru/3.16/library/tkinter.html)**41>42> Исчерпывающий справочник по каждой из базовых команд Tcl/Tk, используемых Tkinter.43> - **[Домашняя страница Tcl/Tk](https://python-all.ru/3.16/library/tkinter.html)**44>45> Дополнительная документация и ссылки на разработку ядра Tcl/Tk.46>47> Книги:48>49> - **[Modern Tkinter for Busy Python Developers](https://python-all.ru/3.16/library/tkinter.html)**50>51> Автор: Mark Roseman. (ISBN 978-1999149567)52> - **[Python GUI programming with Tkinter](https://python-all.ru/3.16/library/tkinter.html)**53>54> Автор: Alan D. Moore. (ISBN 978-1788835886)55> - **[Programming Python](https://python-all.ru/3.16/library/tkinter.html)**56>57> Автор: Mark Lutz; отличное освещение Tkinter. (ISBN 978-0596158101)58> - **[Tcl and the Tk Toolkit (2nd edition)](https://python-all.ru/3.16/library/tkinter.html)**59>60> Авторы: John Ousterhout, изобретатель Tcl/Tk, и Ken Jones; Tkinter не рассматривается. (ISBN 978-0321336330)6162## Архитектура6364Tcl/Tk – это не одна библиотека, а набор из нескольких отдельных модулей, каждый со своей функциональностью и собственной официальной документацией. Бинарные дистрибутивы Python также включают дополнительный модуль.6566**Tcl**6768Tcl – это динамический интерпретируемый язык программирования, так же как Python. Хотя его можно использовать самостоятельно как язык общего назначения, чаще всего он встраивается в C-приложения в качестве скриптового движка или интерфейса к набору инструментов Tk. Библиотека Tcl имеет C-интерфейс для создания и управления одним или несколькими экземплярами интерпретатора Tcl, выполнения команд и сценариев Tcl в этих экземплярах, а также добавления пользовательских команд, реализованных на Tcl или C. Каждый интерпретатор имеет очередь событий, и существуют средства для отправки событий в неё и их обработки. В отличие от Python, модель выполнения Tcl построена на кооперативной многозадачности, и Tkinter устраняет это различие (подробнее см. [модель потоков](https://python-all.ru/3.16/library/tkinter.html#threading-model)).6970**Tk**7172Tk – это [пакет Tcl](https://python-all.ru/3.16/library/tkinter.html), реализованный на C, который добавляет пользовательские команды для создания и управления GUI-виджетами. Каждый объект [`Tk`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Tk) содержит собственный экземпляр интерпретатора Tcl с загруженным Tk. Виджеты Tk очень настраиваемы, хотя и ценой устаревшего внешнего вида. Tk использует очередь событий Tcl для генерации и обработки событий GUI.7374**Ttk**7576Themed Tk (Ttk) – это новое семейство виджетов Tk, которое обеспечивает гораздо лучший внешний вид на разных платформах по сравнению со многими классическими виджетами Tk. Ttk распространяется как часть Tk, начиная с версии Tk 8.5. Привязки для Python предоставляются в отдельном модуле [`tkinter.ttk`](https://python-all.ru/3.16/library/tkinter.ttk.html#module-tkinter.ttk).7778Внутри Tk и Ttk используют возможности нижележащей операционной системы: Xlib на Unix/X11, Cocoa на macOS, GDI на Windows.7980Когда ваше Python-приложение использует класс в Tkinter, например, для создания виджета, модуль `tkinter` сначала собирает строку команды Tcl/Tk. Он передаёт эту строку команды Tcl внутреннему двоичному модулю [`_tkinter`](https://python-all.ru/3.16/library/tkinter.html#module-_tkinter), который затем вызывает интерпретатор Tcl для её выполнения. Интерпретатор Tcl, в свою очередь, обращается к пакетам Tk и/или Ttk, которые затем вызывают Xlib, Cocoa или GDI.8182## Модули Tkinter8384Поддержка Tkinter распределена по нескольким модулям. Большинству приложений понадобится основной модуль `tkinter`, а также модуль [`tkinter.ttk`](https://python-all.ru/3.16/library/tkinter.ttk.html#module-tkinter.ttk), предоставляющий современный набор тематических виджетов и API:8586```python87from tkinter import *88from tkinter import ttk89```9091Модули, обеспечивающие поддержку Tk, включают:9293**`tkinter`**9495Основной модуль Tkinter.9697**[`tkinter.colorchooser`](https://python-all.ru/3.16/library/tkinter.colorchooser.html#module-tkinter.colorchooser)**9899Диалоговое окно для выбора цвета пользователем.100101**[`tkinter.commondialog`](https://python-all.ru/3.16/library/dialog.html#module-tkinter.commondialog)**102103Базовый класс для диалогов, определённых в других перечисленных здесь модулях.104105**[`tkinter.filedialog`](https://python-all.ru/3.16/library/dialog.html#module-tkinter.filedialog)**106107Стандартные диалоги для указания файла для открытия или сохранения.108109**[`tkinter.font`](https://python-all.ru/3.16/library/tkinter.font.html#module-tkinter.font)**110111Утилиты для работы со шрифтами.112113**[`tkinter.messagebox`](https://python-all.ru/3.16/library/tkinter.messagebox.html#module-tkinter.messagebox)**114115Доступ к стандартным диалоговым окнам Tk.116117**[`tkinter.scrolledtext`](https://python-all.ru/3.16/library/tkinter.scrolledtext.html#module-tkinter.scrolledtext)**118119Текстовый виджет со встроенной вертикальной полосой прокрутки.120121**[`tkinter.simpledialog`](https://python-all.ru/3.16/library/dialog.html#module-tkinter.simpledialog)**122123Базовые диалоги и вспомогательные функции.124125**[`tkinter.ttk`](https://python-all.ru/3.16/library/tkinter.ttk.html#module-tkinter.ttk)**126127Набор тематических виджетов, представленный в Tk 8.5, предоставляющий современные альтернативы многим классическим виджетам из основного модуля `tkinter`.128129Дополнительные модули:130131**[`_tkinter`](https://python-all.ru/3.16/library/tkinter.html#module-_tkinter)**132133Двоичный модуль, содержащий низкоуровневый интерфейс к Tcl/Tk. Он автоматически импортируется основным модулем `tkinter` и никогда не должен использоваться напрямую программистами приложений. Обычно это разделяемая библиотека (или DLL), но в некоторых случаях может быть статически слинкована с интерпретатором Python.134135**[`idlelib`](https://python-all.ru/3.16/library/idle.html#module-idlelib)**136137Интегрированная среда разработки и обучения Python (IDLE). Основана на `tkinter`.138139**`tkinter.constants`**140141Символические константы, которые можно использовать вместо строк при передаче различных параметров вызовам Tkinter. Автоматически импортируются основным модулем `tkinter`.142143**[`tkinter.dnd`](https://python-all.ru/3.16/library/tkinter.dnd.html#module-tkinter.dnd)**144145(экспериментально) Поддержка перетаскивания для `tkinter`. Станет устаревшим, когда будет заменён на Tk DND.146147**[`turtle`](https://python-all.ru/3.16/library/turtle.html#module-turtle)**148149Черепашья графика в окне Tk.150151## Краткое руководство по Tkinter152153Этот раздел не задумывался как исчерпывающее руководство по Tk или Tkinter. Для этого обратитесь к одному из внешних ресурсов, упомянутых ранее. Вместо этого данный раздел даёт очень краткое представление о том, как выглядит приложение Tkinter, знакомит с основными концепциями Tk и объясняет структуру обёртки Tkinter.154155Оставшаяся часть этого раздела поможет вам определить классы, методы и параметры, которые понадобятся в вашем приложении Tkinter, а также где найти более подробную документацию по ним, включая официальное справочное руководство Tcl/Tk.156157### Программа «Hello World»158159Начнём с разбора приложения «Hello World» на Tkinter. Это не самая минимальная версия, которую можно написать, но в ней достаточно деталей, чтобы проиллюстрировать некоторые ключевые концепции, которые необходимо знать.160161```python162from tkinter import *163from tkinter import ttk164root = Tk()165frm = ttk.Frame(root, padding=10)166frm.grid()167ttk.Label(frm, text="Hello World!").grid(column=0, row=0)168ttk.Button(frm, text="Quit", command=root.destroy).grid(column=1, row=0)169root.mainloop()170```171172После импортов следующая строка создаёт экземпляр класса [`Tk`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Tk), который инициализирует Tk и создаёт связанный с ним интерпретатор Tcl. Она также создаёт главное окно, известное как корневое окно, которое служит основным окном приложения.173174Следующая строка создаёт виджет Frame, который в данном случае будет содержать метку и кнопку, которые мы создадим далее. Frame помещается внутрь корневого окна.175176Следующая строка создаёт виджет Label с текстовой строкой. Метод [`grid()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Grid.grid) используется для указания относительного расположения (позиции) метки внутри содержащего её виджета Frame, аналогично тому, как работают таблицы в HTML.177178Затем создаётся виджет Button, который размещается справа от метки. При нажатии он вызывает метод [`destroy()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.destroy) корневого окна.179180Наконец, метод [`mainloop()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.mainloop) выводит всё на экран и реагирует на ввод пользователя до завершения программы.181182### Важные концепции Tk183184Даже эта простая программа иллюстрирует следующие ключевые концепции Tk:185186**виджеты**187188Пользовательский интерфейс Tkinter состоит из отдельных *виджетов*. Каждый виджет представлен объектом Python, создаваемым из классов, таких как [`ttk.Frame`](https://python-all.ru/3.16/library/tkinter.ttk.html#tkinter.ttk.Frame), [`ttk.Label`](https://python-all.ru/3.16/library/tkinter.ttk.html#tkinter.ttk.Label) и [`ttk.Button`](https://python-all.ru/3.16/library/tkinter.ttk.html#tkinter.ttk.Button).189190**иерархия виджетов**191192Виджеты организованы в *иерархию*. Метка и кнопка были размещены внутри фрейма, который, в свою очередь, находился внутри корневого окна. При создании каждого *дочернего* виджета его *родительский* виджет передаётся первым аргументом конструктору виджета.193194**параметры конфигурации**195196Виджеты имеют *параметры конфигурации*, которые изменяют их внешний вид и поведение, например текст, отображаемый в метке или кнопке. Разные классы виджетов имеют разные наборы параметров.197198**управление геометрией**199200Виджеты не добавляются в интерфейс автоматически при их создании. *Менеджер геометрии*, такой как `grid`, управляет тем, где они размещаются в интерфейсе.201202**цикл событий**203204Tkinter реагирует на ввод пользователя, изменения в программе и даже обновляет экран только при активном выполнении *цикла событий*. Если программа не выполняет цикл событий, интерфейс не будет обновляться.205206### Понимание того, как Tkinter оборачивает Tcl/Tk207208Когда ваше приложение использует классы и методы Tkinter, внутри Tkinter собирает строки, представляющие команды Tcl/Tk, и выполняет их в интерпретаторе Tcl, прикреплённом к экземпляру [`Tk`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Tk) вашего приложения.209210Будь то попытка разобраться в справочной документации, поиск нужного метода или параметра, адаптация существующего кода или отладка приложения Tkinter, бывают моменты, когда полезно понимать, как выглядят эти базовые команды Tcl/Tk.211212Для иллюстрации ниже приведён эквивалент на Tcl/Tk основной части скрипта Tkinter, показанного выше.213214```python215ttk::frame .frm -padding 10216grid .frm217grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0218grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0219```220221Синтаксис Tcl похож на многие оболочки: первое слово – это команда, за которой следуют её аргументы, разделённые пробелами. Не вдаваясь в подробности, обратите внимание на следующее:222223- Команды для создания виджетов (например, `ttk::frame`) соответствуют классам виджетов в Tkinter.224- Параметры виджетов Tcl (например, `-text`) соответствуют именованным аргументам в Tkinter.225- В Tcl виджеты идентифицируются по *пути* (например, `.frm.btn`), тогда как Tkinter использует не имена, а ссылки на объекты.226- Положение виджета в иерархии закодировано в его (иерархическом) пути, который использует `.` (точку) в качестве разделителя. Путь корневого окна – это просто `.` (точка). В Tkinter иерархия определяется не путём, а указанием родительского виджета при создании каждого дочернего виджета.227- Операции, которые реализованы как отдельные *команды* в Tcl (например, `grid` или `destroy`), представлены как *методы* объектов виджетов Tkinter. Как вы скоро увидите, в других случаях Tcl использует то, что выглядит как вызовы методов объектов виджетов, что более точно отражает подход Tkinter.228229### Как сделать…? Какой параметр…?230231Если вы не уверены, как сделать что-то в Tkinter, и не можете сразу найти это в используемом учебнике или справочной документации, есть несколько стратегий, которые могут помочь.232233Во-первых, помните, что детали работы отдельных виджетов могут различаться в разных версиях как Tkinter, так и Tcl/Tk. При поиске документации убедитесь, что она соответствует версиям Python и Tcl/Tk, установленным в вашей системе.234235При поиске способа использования API полезно знать точное имя класса, параметра или метода, которые вы используете. Интроспекция, будь то в интерактивной оболочке Python или с помощью [`print()`](https://python-all.ru/3.16/library/functions.html#print), может помочь определить, что вам нужно.236237Чтобы узнать, какие параметры конфигурации доступны для любого виджета, вызовите его метод [`configure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.configure), который возвращает словарь с различной информацией о каждом объекте, включая его значения по умолчанию и текущие значения. Используйте [`keys()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.keys), чтобы получить только имена каждого параметра.238239```python240btn = ttk.Button(frm, ...)241print(btn.configure().keys())242```243244Поскольку большинство виджетов имеют много общих параметров конфигурации, может быть полезно выяснить, какие из них специфичны для конкретного класса виджетов. Один из способов – сравнить список параметров с аналогичным списком более простого виджета, например фрейма.245246```python247print(set(btn.configure().keys()) - set(frm.configure().keys()))248```249250Аналогично, можно найти доступные методы объекта виджета с помощью стандартной функции [`dir()`](https://python-all.ru/3.16/library/functions.html#dir). Если попробовать, окажется, что существует более 200 общих методов виджетов, поэтому снова полезно определить методы, специфичные для класса виджета.251252```python253print(dir(btn))254print(set(dir(btn)) - set(dir(frm)))255```256257### Навигация по справочному руководству Tcl/Tk258259Как уже отмечалось, официальное справочное руководство по [командам Tk](https://python-all.ru/3.16/library/tkinter.html) (страницы man) часто является наиболее точным описанием того, что делают конкретные операции с виджетами. Даже если вы знаете имя нужного параметра или метода, вам всё равно может потребоваться поискать в нескольких местах.260261Хотя все операции в Tkinter реализованы как вызовы методов объектов виджетов, многие операции Tcl/Tk представлены в виде команд, которые принимают путь к виджету в качестве первого параметра, за которым следуют необязательные параметры, например262263```python264destroy .265grid .frm.btn -column 0 -row 0266```267268Другие же больше похожи на методы, вызываемые для объекта виджета (на самом деле, при создании виджета в Tcl/Tk создаётся команда Tcl с именем пути к виджету, первым параметром которой является имя вызываемого метода).269270```python271.frm.btn invoke272.frm.lbl configure -text "Goodbye"273```274275В официальной справочной документации Tcl/Tk большинство операций, похожих на вызовы методов, можно найти на man-странице конкретного виджета (например, метод [`invoke()`](https://python-all.ru/3.16/library/tkinter.ttk.html#tkinter.ttk.Button.invoke) есть на man-странице [ttk::button](https://python-all.ru/3.16/library/tkinter.html)), тогда как функции, принимающие виджет в качестве параметра, часто имеют собственную man-страницу (например, [grid](https://python-all.ru/3.16/library/tkinter.html)).276277Многие общие параметры и методы можно найти на man-страницах [options](https://python-all.ru/3.16/library/tkinter.html) или [ttk::widget](https://python-all.ru/3.16/library/tkinter.html), тогда как остальные находятся на man-странице конкретного класса виджета.278279Многие методы Tkinter имеют составные имена, например, [`winfo_x()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.winfo_x), [`winfo_height()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.winfo_height), [`winfo_viewable()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.winfo_viewable). Документацию по всем ним можно найти на man-странице [winfo](https://python-all.ru/3.16/library/tkinter.html).280281> **Примечание**282>283> Несколько сбивает с толку то, что у всех виджетов Tkinter есть методы, которые на самом деле не работают с виджетом, а действуют на глобальном уровне, независимо от какого-либо виджета. Примерами являются методы для доступа к буферу обмена или системному звонку. (Они реализованы как методы в базовом классе [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget), от которого наследуют все виджеты Tkinter).284285## Модель многопоточности286287Python и Tcl/Tk имеют очень разные модели многопоточности, которые `tkinter` пытается согласовать. При использовании потоков следует учитывать это.288289Интерпретатор Python может иметь множество связанных с ним потоков. В Tcl можно создавать несколько потоков, но каждый поток имеет отдельный экземпляр интерпретатора Tcl. Потоки также могут создавать более одного экземпляра интерпретатора, но каждый экземпляр может использоваться только тем потоком, который его создал.290291Каждый объект [`Tk`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Tk), созданный `tkinter`, содержит интерпретатор Tcl. Он также отслеживает, какой поток создал этот интерпретатор. Вызовы `tkinter` могут производиться из любого потока Python. Внутренне, если вызов поступает из потока, отличного от создавшего объект `Tk`, в очередь событий интерпретатора помещается событие, и при его выполнении результат возвращается вызывающему потоку Python.292293Приложения Tcl/Tk обычно управляются событиями, то есть после инициализации интерпретатор запускает цикл событий (то есть [`Tk.mainloop`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.mainloop)) и реагирует на события. Поскольку он однопоточный, обработчики событий должны отвечать быстро, иначе они заблокируют обработку других событий. Чтобы избежать этого, длительные вычисления не должны выполняться в обработчике событий; их либо разбивают на более мелкие части с помощью таймеров, либо запускают в другом потоке. Это отличается от многих наборов инструментов для графического интерфейса, где графический интерфейс работает в полностью отдельном потоке от всего кода приложения, включая обработчики событий.294295Если интерпретатор Tcl не выполняет цикл событий и не обрабатывает события, любые вызовы `tkinter` из потоков, отличных от того, в котором работает интерпретатор Tcl, завершатся ошибкой.296297Существует ряд особых случаев:298299- Библиотеки Tcl/Tk, собранные без поддержки потоков, теперь встречаются редко: Tcl/Tk 9.0 (поставляемая версия) всегда поддерживает потоки, поэтому такая ситуация возникает только с некоторыми старыми сборками 8.x. Когда библиотека не поддерживает потоки, `tkinter` вызывает библиотеку из исходного потока Python, даже если он отличается от потока, создавшего интерпретатор Tcl. Глобальная блокировка гарантирует, что одновременно выполняется только один вызов.300- Хотя `tkinter` позволяет создать более одного экземпляра объекта [`Tk`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Tk) (с собственным интерпретатором), все интерпретаторы, принадлежащие одному и тому же потоку, используют общую очередь событий, что быстро приводит к проблемам. На практике не следует создавать более одного экземпляра `Tk` одновременно. В противном случае лучше создавать их в отдельных потоках и убедиться, что используется сборка Tcl/Tk с поддержкой потоков.301- Блокирующие обработчики событий – не единственный способ помешать интерпретатору Tcl снова войти в цикл событий. Можно даже запускать несколько вложенных циклов событий или полностью отказаться от цикла событий. Если выполняются какие-либо нетривиальные действия с событиями или потоками, следует учитывать эти возможности.302- Существует несколько отдельных функций `tkinter`, которые в настоящее время работают только при вызове из потока, создавшего интерпретатор Tcl.303304## Удобный справочник305306### Настройка параметров307308Параметры управляют такими вещами, как цвет и ширина границы виджета. Параметры можно задать тремя способами:309310**При создании объекта – с помощью именованных аргументов**311312```python313fred = Button(self, fg="red", bg="blue")314```315316**После создания объекта – используя имя параметра как индекс словаря**317318```python319fred["fg"] = "red"320fred["bg"] = "blue"321```322323**Использовать метод config() для обновления нескольких атрибутов после создания объекта**324325```python326fred.config(fg="red", bg="blue")327```328329Полное объяснение конкретного параметра и его поведения можно найти на man-страницах Tk для соответствующего виджета.330331Обратите внимание, что man-страницы перечисляют «СТАНДАРТНЫЕ ПАРАМЕТРЫ» и «ПАРАМЕТРЫ, СПЕЦИФИЧНЫЕ ДЛЯ ВИДЖЕТА» для каждого виджета. Первое – список параметров, общих для многих виджетов, второе – параметры, свойственные конкретному виджету. Стандартные параметры задокументированы на man-странице *[options(3)](https://python-all.ru/3.16/library/tkinter.html)*.332333В этом документе не делается различий между стандартными и специфичными для виджета параметрами. Некоторые параметры не применимы к некоторым типам виджетов. Реагирует ли данный виджет на определённый параметр, зависит от класса виджета: кнопки имеют параметр `command`, а метки – нет.334335Параметры, поддерживаемые данным виджетом, перечислены на его man-странице, или их можно запросить во время выполнения, вызвав метод [`config()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.config) без аргументов, или вызвав метод [`keys()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.keys) для этого виджета. Возвращаемое значение этих вызовов – словарь, ключом которого является имя параметра в виде строки (например, `'relief'`), а значениями – 5-кортежи.336337Некоторые параметры, например `bg`, являются синонимами распространённых параметров с длинными именами (`bg` – сокращение для «background»). При передаче методу `config()` имени сокращённого параметра будет возвращён 2-кортеж, а не 5-кортеж. Возвращаемый 2-кортеж содержит имя синонима и «реальный» параметр (например, `('bg', 'background')`).338339| Индекс | Значение | Пример |340| --- | --- | --- |341| 0 | имя параметра | `'relief'` |342| 1 | имя параметра для поиска в базе данных | `'relief'` |343| 2 | класс параметра для поиска в базе данных | `'Relief'` |344| 3 | значение по умолчанию | `'raised'` |345| 4 | текущее значение | `'groove'` |346347Пример:348349```python350>>> print(fred.config())351{'relief': ('relief', 'relief', 'Relief', 'raised', 'groove')}352```353354Разумеется, выведенный словарь будет содержать все доступные опции и их значения. Это приведено только в качестве примера.355356### Упаковщик357358Упаковщик – один из механизмов управления геометрией в Tk. Менеджеры геометрии используются для указания относительного расположения виджетов внутри их контейнера. В отличие от более громоздкого *разместителя* (который используется реже и не рассматривается здесь), упаковщик принимает качественные спецификации отношений – *выше*, *слева от*, *заполнение* и т. д. – и самостоятельно вычисляет точные координаты размещения.359360Размер любого контейнерного виджета определяется размером «дочерних виджетов» внутри него. Упаковщик используется для управления тем, где дочерние виджеты появляются внутри контейнера, в который они упаковываются. Виджеты можно упаковывать в рамки, а рамки – в другие рамки, чтобы добиться желаемого расположения. Кроме того, после упаковки расположение динамически корректируется при постепенных изменениях конфигурации.361362Обратите внимание, что виджеты не появляются, пока для них не будет указана геометрия с помощью менеджера геометрии. Распространённая ошибка новичков – пропустить указание геометрии, а затем удивляться, что виджет создан, но ничего не отображается. Виджет появится только после того, как к нему будет применён, например, метод [`pack()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Pack.pack) упаковщика.363364Метод pack() можно вызывать с парами «ключевая опция/значение», которые управляют тем, где виджет будет располагаться внутри контейнера и как он будет вести себя при изменении размера главного окна приложения. Вот несколько примеров:365366```python367fred.pack() # по умолчанию side = "top"368fred.pack(side="left")369fred.pack(expand=1)370```371372### Опции упаковщика373374За более подробной информацией об упаковщике и его опциях обращайтесь к man-страницам и странице 183 книги Джона Оустерхаута.375376**привязка**377378Тип привязки. Указывает, где упаковщик должен размещать каждое содержимое в своём участке.379380**расширение**381382логическое значение, `0` или `1`.383384**заполнение**385386Допустимые значения: `'x'`, `'y'`, `'both'`, `'none'`.387388**ipadx и ipady**389390Расстояние, обозначающее внутренний отступ с каждой стороны содержимого.391392**padx и pady**393394Расстояние, обозначающее внешний отступ с каждой стороны содержимого.395396**сторона**397398Допустимые значения: `'left'`, `'right'`, `'top'`, `'bottom'`.399400### Связывание переменных виджетов401402Текущее значение некоторых виджетов (например, виджетов ввода текста) может быть напрямую связано с переменными приложения с помощью специальных опций. Эти опции: `variable`, `textvariable`, `onvalue`, `offvalue` и `value`. Такая связь работает в обе стороны: если переменная изменяется по какой-либо причине, связанный с ней виджет обновится, отображая новое значение.403404К сожалению, в текущей реализации `tkinter` невозможно передать виджету произвольную переменную Python через опцию `variable` или `textvariable`. Единственные переменные, с которыми это работает, – это переменные, являющиеся подклассами класса Variable, определённого в `tkinter`.405406Уже определено множество полезных подклассов Variable: [`StringVar`](https://python-all.ru/3.16/library/tkinter.html#tkinter.StringVar), [`IntVar`](https://python-all.ru/3.16/library/tkinter.html#tkinter.IntVar), [`DoubleVar`](https://python-all.ru/3.16/library/tkinter.html#tkinter.DoubleVar) и [`BooleanVar`](https://python-all.ru/3.16/library/tkinter.html#tkinter.BooleanVar). Чтобы прочитать текущее значение такой переменной, вызовите у неё метод [`get()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable.get), а чтобы изменить значение – метод `set()`. Если следовать этому протоколу, виджет будет всегда отслеживать значение переменной без дополнительных действий с вашей стороны.407408Сохраняйте ссылку на переменную всё время, пока виджет её использует, например, храня её в виде атрибута (см. [`Variable`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable)).409410Например:411412```python413import tkinter as tk414415class App(tk.Frame):416 def __init__(self, master):417 super().__init__(master)418 self.pack()419420 self.entrythingy = tk.Entry()421 self.entrythingy.pack()422423 # Создайте переменную приложения.424 self.contents = tk.StringVar()425 # Установите её в некоторое значение.426 self.contents.set("this is a variable")427 # Укажите виджету ввода отслеживать эту переменную.428 self.entrythingy["textvariable"] = self.contents429430 # Определите колбэк для события нажатия Return.431 # Он выводит текущее значение переменной.432 self.entrythingy.bind('<Key-Return>',433 self.print_contents)434435 def print_contents(self, event):436 print("Hi. The current entry content is:",437 self.contents.get())438439root = tk.Tk()440myapp = App(root)441myapp.mainloop()442```443444### Менеджер окон445446В Tk есть служебная команда `wm` для взаимодействия с менеджером окон. Опции команды `wm` позволяют управлять такими вещами, как заголовки, расположение, значки и тому подобное. В `tkinter` эти команды реализованы как методы класса [`Wm`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm). Виджеты верхнего уровня являются подклассами класса `Wm`, поэтому могут напрямую вызывать методы `Wm`.447448Чтобы получить окно верхнего уровня, содержащее данный виджет, можно просто обратиться к [`master`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Tk.master) виджета. Конечно, если виджет был упакован внутри рамки, `master` не будет представлять окно верхнего уровня. Чтобы получить окно верхнего уровня, содержащее произвольный виджет, можно вызвать метод [`winfo_toplevel()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.winfo_toplevel). Также существует метод `_root()`; его имя начинается с подчёркивания, чтобы показать, что эта функция является частью реализации, а не интерфейсом к функциональности Tk. Он возвращает корневое окно приложения, а не ближайшее охватывающее окно верхнего уровня.449450Вот несколько примеров типичного использования:451452```python453import tkinter as tk454455class App(tk.Frame):456 def __init__(self, master=None):457 super().__init__(master)458 self.pack()459460# создайте приложение461myapp = App()462463#464# здесь вызовы методов класса оконного менеджера465#466myapp.master.title("My Do-Nothing Application")467myapp.master.maxsize(1000, 400)468469# запустите программу470myapp.mainloop()471```472473### Типы данных опций Tk474475**привязка**476477Допустимые значения – направления компаса: `"n"`, `"ne"`, `"e"`, `"se"`, `"s"`, `"sw"`, `"w"`, `"nw"`, а также `"center"`.478479**битовая карта**480481Существует десять встроенных именованных растровых изображений: `'error'`, `'gray12'`, `'gray25'`, `'gray50'`, `'gray75'`, `'hourglass'`, `'info'`, `'questhead'`, `'question'`, `'warning'`. Чтобы указать имя файла X bitmap, укажите полный путь к файлу с префиксом `@`, как в `"@/usr/contrib/bitmap/gumby.bit"`.482483**булевый**484485Можно передать целые числа 0 или 1 или строки `"yes"` или `"no"`.486487**колбэк**488489Это любая функция Python, которая не принимает аргументов. Например:490491```python492def print_it():493 print("hi there")494fred["command"] = print_it495```496497**цвет**498499Цвета можно задавать именами цветов X из файла rgb.txt или строками, представляющими значения RGB в 4-битном: `"#RGB"`, 8-битном: `"#RRGGBB"`, 12-битном: `"#RRRGGGBBB"` или 16-битном: `"#RRRRGGGGBBBB"` диапазонах, где R,G,B обозначают любую допустимую шестнадцатеричную цифру. Подробнее см. на стр. 160 книги Оустерхаута.500501**курсор**502503Имя курсора мыши, отображаемого при наведении указателя на виджет. Tk предоставляет портативный набор имён курсоров, доступных на всех платформах (например, `"arrow"`, `"watch"`, `"cross"` или `"hand2"`); также можно использовать стандартные имена X-курсоров из `cursorfont.h`, без префикса `XC_` (так `XC_hand2` становится `"hand2"`). Полный список имён, включая платформозависимые, приведён на странице *[cursors(3tk)](https://python-all.ru/3.16/library/tkinter.html)* руководства. Можно также указать собственные файлы растрового изображения и маски. В Windows можно напрямую использовать файл курсора (`.cur` или `.ani`), указав его путь с префиксом `@`, как в `"@C:/cursors/bart.ani"`.504505**расстояние**506507Экранные расстояния можно указывать в пикселях или абсолютных единицах. Пиксели задаются числами, а абсолютные расстояния – строками, где последний символ обозначает единицы: `c` для сантиметров, `i` для дюймов, `m` для миллиметров, `p` для типографских пунктов. Например, 3,5 дюйма записывается как `"3.5i"`.508509**шрифт**510511Tk использует описание шрифта, например `{courier 10 bold}`; в `tkinter` это наиболее естественно передавать как кортеж из `(family, size, *styles)` (или как эквивалентную строку `"Courier 10 bold"`). Положительные размеры шрифта измеряются в пунктах; отрицательные – в пикселях.512513**геометрия**514515Это строка вида `widthxheight`, где ширина и высота задаются в пикселях для большинства виджетов (в символах для виджетов, отображающих текст). Например: `fred["geometry"] = "200x100"`.516517**выравнивание**518519Допустимые значения – строки: `"left"`, `"center"` и `"right"`.520521**область**522523Это строка из четырёх разделённых пробелами элементов, каждый из которых является допустимым расстоянием (см. выше). Например: `"2 3 4 5"`, `"3i 2i 4.5i 2i"` и `"3c 2c 4c 10.43c"` – все являются допустимыми областями.524525**рельеф**526527Определяет стиль рамки виджета. Допустимые значения: `"raised"`, `"sunken"`, `"flat"`, `"groove"`, `"ridge"` и `"solid"`.528529**команда прокрутки**530531Это почти всегда метод `set()` какого-либо виджета полосы прокрутки, но может быть любым методом виджета, принимающим один аргумент.532533**перенос**534535Должно быть одним из: `"none"`, `"char"` или `"word"`.536537### Привязки и события538539Метод bind из команды виджета позволяет отслеживать определённые события и вызывать функцию обратного вызова при наступлении события такого типа. Формат метода bind:540541```python542def bind(self, sequence, func, add=''):543```544545где:546547**последовательность**548549– это строка, обозначающая целевой тип события. Физические события используют форму `<modifier-modifier-type-detail>` (например, `"<Enter>"` или `"<Control-Button-1>"`); определённые приложением виртуальные события используют двойные угловые скобки, как в `"<<Paste>>"`. (Подробнее см. на странице *[bind(3tk)](https://python-all.ru/3.16/library/tkinter.html)* руководства и на стр. 201 книги Джона Оустерхаута *Tcl and the Tk Toolkit (2nd edition)*.)550551**функция**552553– это функция Python, принимающая один аргумент, которая вызывается при наступлении события. В качестве аргумента будет передан экземпляр Event. (Функции, используемые таким образом, обычно называются *колбэками*.)554555**добавить**556557является необязательным, может быть `''` или `'+'`. Передача пустой строки означает, что эта привязка заменяет любые другие привязки, связанные с этим событием. Передача `'+'` означает, что эта функция добавляется в список функций, привязанных к данному типу события.558559Например:560561```python562def turn_red(self, event):563 event.widget["activeforeground"] = "red"564565self.button.bind("<Enter>", self.turn_red)566```567568Обратите внимание, как поле widget объекта события используется в `turn_red()` колбэке. Это поле содержит виджет, который перехватил событие X. В следующей таблице перечислены другие поля событий, к которым можно обратиться, и как они обозначаются в Tk; это может пригодиться при обращении к страницам руководства Tk.569570| Tk | Поле события Tkinter | Tk | Поле события Tkinter |571| --- | --- | --- | --- |572| %f | фокус | %A | char |573| %h | рост | %E | send\_event |574| %k | keycode | %K | keysym |575| %s | состояние | %N | keysym\_num |576| %t | time | %T | type |577| %w | width | %W | widget |578| %x | x | %X | x\_root |579| %y | y | %Y | y\_root |580| %# | serial | %b | num |581| %d | detail | %D | delta |582583Параметр `add` выше влияет только на привязки, задаваемые вами. Каждый виджет также наследует *привязки класса*, реализующие его стандартное поведение – например, виджет [`Text`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text) привязывает `Control`-`t` для транспозиции двух символов. Они описаны в разделе привязок страницы руководства Tk для данного виджета (например, *[text(3tk)](https://python-all.ru/3.16/library/tkinter.html)* или *[entry(3tk)](https://python-all.ru/3.16/library/tkinter.html)*).584585Привязки класса обрабатываются отдельно от ваших собственных, поэтому привязка события самостоятельно не заменяет поведение по умолчанию; выполняются обе. Чтобы подавить нежелательную привязку по умолчанию, привяжите событие к виджету и верните строку `"break"` из вашего колбэка.586587### Параметр index588589Ряд виджетов требует передачи параметров «index». Они используются для указания на конкретное место в виджете Text, на определённые символы в виджете Entry или на конкретные пункты меню в виджете Menu.590591**Индексы виджета Entry (index, view index и т.д.)**592593Виджеты Entry имеют опции, относящиеся к позициям символов в отображаемом тексте. Для доступа к этим специальным точкам в текстовых виджетах можно использовать следующие функции `tkinter`:594595**Индексы виджета Text**596597Обозначение индексов для виджетов Text очень богатое и лучше всего описано на страницах руководства Tk.598599**Индексы меню (menu.invoke(), menu.entryconfig() и т.д.)**600601Некоторые опции и методы для меню работают с конкретными пунктами меню. Всякий раз, когда для опции или параметра требуется индекс меню, можно передать:602603- целое число, которое указывает на числовую позицию пункта в виджете, считая сверху, начиная с 0;604- строку `"active"`, которая указывает на позицию меню, находящуюся в данный момент под курсором;605- строку `"last"`, которая указывает на последний пункт меню;606- Целое число, перед которым стоит `@`, например `@6`, где целое число интерпретируется как координата y в пикселях в системе координат меню;607- строку `"none"`, которая указывает на отсутствие какого-либо пункта меню, чаще всего используется с menu.activate() для деактивации всех пунктов, и наконец,608- текстовую строку, которая сопоставляется с образцом с меткой пункта меню при сканировании сверху вниз. Обратите внимание, что этот тип индекса рассматривается после всех остальных, что означает, что совпадения для пунктов меню с метками `last`, `active` или `none` могут быть интерпретированы как указанные выше литералы.609610### Изображения611612Изображения разных форматов можно создать через соответствующий подкласс [`tkinter.Image`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Image):613614- [`BitmapImage`](https://python-all.ru/3.16/library/tkinter.html#tkinter.BitmapImage) для изображений в формате XBM.615- [`PhotoImage`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PhotoImage) для изображений в форматах PGM, PPM, GIF и PNG. Последний поддерживается начиная с Tk 8.6.616617Оба типа изображений создаются с помощью опции `file` или `data` (доступны и другие опции).618619Изменено в версии 3.13: Добавлен метод `PhotoImage` `copy_replace()` для копирования области из одного изображения в другое, возможно с масштабированием пикселей и/или субдискретизацией. Добавлен параметр *from\_coords* в методы `PhotoImage` `copy()`, `zoom()` и `subsample()`. Добавлены параметры *zoom* и *subsample* в метод `PhotoImage` `copy()`.620621Затем объект изображения можно использовать везде, где какой-либо виджет поддерживает опцию `image` (например, метки, кнопки, меню). В таких случаях Tk не хранит ссылку на изображение. Когда последняя ссылка Python на объект изображения удаляется, данные изображения также удаляются, и Tk будет отображать пустой прямоугольник там, где использовалось изображение.622623> **См. также**624>625> Пакет [Pillow](https://python-all.ru/3.16/library/tkinter.html) добавляет поддержку форматов BMP, JPEG, TIFF, WebP и других.626627## Ссылка628629В этом разделе описаны классы, методы, функции и константы модуля `tkinter`. Большинство из них являются обёртками команд Tcl/Tk; обращайтесь к официальной документации Tcl/Tk для полного списка опций виджетов и дополнительных сведений.630631#### `exception tkinter.TclError`632633Исключение, возникающее при сбое вызова интерпретатора Tcl, например, когда виджету передана неизвестная опция или недопустимое значение.634635### Базовые и примесные классы636637#### `class tkinter.Misc`638639Класс `Misc` – это примесь, наследуемая классом [`Tk`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Tk) и, через [`BaseWidget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.BaseWidget), каждым виджетом. Он предоставляет обширный набор методов, общих для всех объектов Tk: запрос информации об окне, управление привязками событий и циклом событий, управление фокусом клавиатуры и захватом указателя, доступ к выделению, буферу обмена и базе данных опций, а также различные служебные и интроспекционные сервисы. Поскольку они наследуются, эти методы доступны на каждом виджете и на объекте приложения `Tk`, и документированы здесь один раз, а не повторяются для каждого виджета.640641#### `cget(key)`642643Возвращает текущее значение опции конфигурации с именем *key* для данного виджета в виде строки. Выражение `widget[key]` эквивалентно и может использоваться вместо этого.644645#### `configure(cnf=None, **kw)`646647Запрашивает или изменяет опции конфигурации виджета. Без аргументов возвращает словарь, сопоставляющий каждому доступному имени опции кортеж с её описанием (имя, X ресурсное имя, X ресурсный класс, значение по умолчанию и текущее значение). Если указано одно имя опции в виде строки, возвращает кортеж только для этой опции. Если указаны одно или несколько ключевых аргументов, или передан словарь в качестве *cnf*, устанавливает каждую именованную опцию в соответствующее значение; выражение `widget[key] = value` устанавливает одну опцию таким же образом.648649[`config()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.config) является псевдонимом `configure()`.650651#### `keys()`652653Возвращает список имён всех опций конфигурации данного виджета.654655#### `getboolean(s)`656657Интерпретирует строку *s* как логическое значение Tcl и возвращает соответствующее [`bool`](https://python-all.ru/3.16/library/functions.html#bool). Tcl принимает такие значения, как `'1'`, `'0'`, `'yes'`, `'no'`, `'true'` и `'false'`. Вызывает [`ValueError`](https://python-all.ru/3.16/library/exceptions.html#ValueError), если *s* не является допустимым логическим значением.658659#### `getdouble(s)`660661Интерпретирует строку *s* как число с плавающей запятой Tcl и возвращает его в виде [`float`](https://python-all.ru/3.16/library/functions.html#float). Вызывает [`ValueError`](https://python-all.ru/3.16/library/exceptions.html#ValueError), если *s* не является допустимым числом.662663Добавлено в версии 3.5.664665#### `getint(s)`666667Интерпретирует строку *s* как целое число Tcl и возвращает его как [`int`](https://python-all.ru/3.16/library/functions.html#int). Вызывает [`ValueError`](https://python-all.ru/3.16/library/exceptions.html#ValueError), если *s* не является допустимым целым числом.668669#### `getvar(name)`670671Возвращает значение глобальной переменной Tcl с именем *name*.672673#### `setvar(name, value)`674675Устанавливает глобальную переменную Tcl с именем *name* в значение *value*.676677Методы `getvar()` и `setvar()` предоставляют прямой доступ к переменным Tcl. В большинстве кода вместо них используется подкласс [`Variable`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable), такой как [`StringVar`](https://python-all.ru/3.16/library/tkinter.html#tkinter.StringVar) или [`IntVar`](https://python-all.ru/3.16/library/tkinter.html#tkinter.IntVar), который оборачивает переменную Tcl и преобразует её значение в тип Python и обратно.678679#### `register(func, subst=None, needcleanup=1)`680681Регистрирует вызываемый объект Python *func* как команду Tcl и возвращает имя новой команды в виде строки. Всякий раз, когда Tcl вызывает эту команду, вызывается *func*; если указан *subst*, он сначала применяется к аргументам команды. Это механизм, используемый внутри для преобразования обратных вызовов Python в имена команд, передаваемые опциям Tk, таким как *command*. Если *needcleanup* не равно false, команда автоматически удаляется при уничтожении виджета.682683Изменено в версии 3.13: Аргументы, передаваемые в *func*, больше не преобразуются в строки.684685#### `deletecommand(name)`686687Удаляет Tcl-команду с именем *name*, например ту, что была возвращена ранее вызовом [`register()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.register).688689#### `nametowidget(name)`690691Возвращает экземпляр виджета, соответствующий Tk-пути *name*.692693#### `send(interp, cmd, *args)`694695Отправляет Tcl-команду *cmd* с переданными аргументами *args* интерпретатору Tcl, зарегистрированному под именем *interp*, и возвращает результат. Доступно не на всех платформах.696697#### `destroy()`698699Уничтожает данный виджет и все его дочерние виджеты, удаляя связанные с ними Tcl-команды.700701#### `tkraise(aboveThis=None)`702703Поднимает данный виджет в стеке порядка, чтобы он отображался поверх своих соседей. Если указан *aboveThis*, виджет перемещается непосредственно над этим элементом в стеке порядка.704705[`lift()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.lift) является псевдонимом `tkraise()`.706707#### `lower(belowThis=None)`708709Опускает данный виджет в стеке порядка, чтобы он отображался под своими соседями. Если указан *belowThis*, виджет перемещается непосредственно под этим элементом в стеке порядка.710711[`tkraise()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.tkraise)/[`lift()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.lift) и `lower()` переопределяются в виджете [`Canvas`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas), где они вместо этого переупорядочивают элементы canvas.712713#### `image_names()`714715Возвращает имена всех изображений, которые на данный момент существуют в интерпретаторе Tcl.716717Это переопределяется в виджете [`Text`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text), где `image_names()` вместо этого возвращает имена его встроенных изображений.718719#### `image_types()`720721Возвращает доступные типы изображений, такие как `'photo'` и `'bitmap'`.722723#### `grid_anchor(anchor=None)`724725Устанавливает привязку (anchor), которая определяет положение сетки внутри контейнера, когда контейнер больше сетки и ни одна строка или столбец не имеют ненулевого веса. *anchor* – одна из стандартных строк привязки, например `'nw'` (по умолчанию) или `'center'`. Вызов без аргументов не даёт эффекта.726727[`anchor()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.anchor) является псевдонимом `grid_anchor()`.728729Добавлено в версии 3.3.730731#### `grid_bbox(column=None, row=None, col2=None, row2=None)`732733Возвращает ограничивающий прямоугольник (в пикселях) области сетки, размещённой внутри данного контейнера, в виде кортежа из 4 элементов `(xoffset, yoffset, width, height)`. Без аргументов возвращается ограничивающий прямоугольник всей сетки. Если указаны *column* и *row*, прямоугольник охватывает ячейку с номером строки и столбца 0 до этой ячейки; если также указаны *col2* и *row2*, то он охватывает область от ячейки (*column*, *row*) до ячейки (*col2*, *row2*).734735[`bbox()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.bbox) – это псевдоним `grid_bbox()`, за исключением [`Canvas`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas), [`Listbox`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox), [`Spinbox`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox), [`Text`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text), [`ttk.Entry`](https://python-all.ru/3.16/library/tkinter.ttk.html#tkinter.ttk.Entry) и [`ttk.Treeview`](https://python-all.ru/3.16/library/tkinter.ttk.html#tkinter.ttk.Treeview), которые предоставляют собственный метод `bbox()`.736737#### `grid_columnconfigure(index, cnf={}, **kw)`738739Запрашивает или задаёт свойства столбца (или столбцов) *index* сетки, управляемой этим контейнером. *index* может быть номером столбца; при задании параметров это также может быть список номеров столбцов, строка `'all'` для воздействия на каждый столбец, или дочерний виджет, у которого затрагиваются занимаемые столбцы. Поддерживаемые параметры:740741***minsize***742743Минимальный размер столбца в пикселях.744745***weight***746747Целое число, определяющее, какая доля дополнительного пространства выделяется столбцу. Вес `0` оставляет столбец запрошенного размера, а столбец с весом два увеличивается вдвое быстрее столбца с весом один.748749***uniform***750751Имя единой группы. Столбцы с одинаковым непустым именем группы сохраняют размеры, строго пропорциональные их весам.752753***pad***754755Дополнительное пространство в пикселях, добавляемое к наибольшему виджету в столбце при вычислении размера столбца.756757С одним именем опции возвращает её значение; без аргументов возвращает словарь всех опций.758759[`columnconfigure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.columnconfigure) является псевдонимом `grid_columnconfigure()`.760761#### `grid_rowconfigure(index, cnf={}, **kw)`762763Запрашивает или задаёт свойства строки (или строк) *index* сетки, управляемой этим контейнером. *index* интерпретируется так же, как для [`grid_columnconfigure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grid_columnconfigure), а поддерживаемые опции (*minsize*, *weight*, *uniform* и *pad*) те же, но применяются к строке, а не к столбцу.764765[`rowconfigure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.rowconfigure) является псевдонимом `grid_rowconfigure()`.766767#### `grid_location(x, y)`768769Возвращает `(column, row)` ячейки сетки, содержащей пиксель в позиции (*x*, *y*), заданной в пикселях относительно этого контейнера. Для позиций выше или левее сетки возвращается `-1` для соответствующей координаты.770771#### `grid_propagate()`772773#### `grid_propagate(flag)`774775Включает или отключает распространение геометрии для этого контейнера, когда он управляет своими дочерними элементами с помощью менеджера геометрии grid. Когда *flag* равен true, контейнер изменяет свой размер, чтобы соответствовать запрошенным размерам дочерних элементов; когда false, его размер остаётся под вашим контролем. При вызове без аргументов возвращает текущую настройку в виде булева значения.776777#### `grid_size()`778779Возвращает размер сетки, управляемой этим контейнером, в виде кортежа `(columns, rows)`.780781[`size()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.size) является псевдонимом `grid_size()`, за исключением [`Listbox`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox) и [`ttk.Treeview`](https://python-all.ru/3.16/library/tkinter.ttk.html#tkinter.ttk.Treeview), которые предоставляют собственный метод `size()`.782783#### `grid_slaves(row=None, column=None)`784785Возвращает список дочерних виджетов, управляемых в сетке этого контейнера, начиная с последнего добавленного. Если указаны *row* или *column*, возвращаются только дочерние элементы в этой строке или столбце.786787#### `grid_content(row=None, column=None)`788789То же, что [`grid_slaves()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grid_slaves): возвращает дочерние виджеты, управляемые в сетке этого контейнера, с возможностью ограничения по заданной *строке* или *столбцу*.790791Добавлено в версии 3.15.792793#### `pack_propagate()`794795#### `pack_propagate(flag)`796797Включает или отключает распространение геометрии для этого контейнера, когда он управляет своими дочерними элементами с помощью менеджера геометрии pack. Когда *flag* равен true, контейнер изменяет свой размер, чтобы соответствовать запрошенным размерам дочерних элементов; когда false, его размер остаётся под вашим контролем. При вызове без аргументов возвращает текущую настройку в виде булева значения.798799[`propagate()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.propagate) является псевдонимом `pack_propagate()`.800801#### `pack_slaves()`802803Возвращает список дочерних виджетов, управляемых этим контейнером с помощью менеджера геометрии pack, в порядке упаковки.804805[`slaves()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.slaves) является псевдонимом `pack_slaves()`.806807#### `pack_content()`808809То же, что [`pack_slaves()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.pack_slaves): возвращает дочерние виджеты, управляемые этим контейнером с помощью менеджера геометрии pack, в порядке упаковки.810811[`content()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.content) является псевдонимом `pack_content()`.812813Добавлено в версии 3.15.814815#### `place_slaves()`816817Возвращает список дочерних виджетов, управляемых этим контейнером с помощью менеджера геометрии place.818819#### `place_content()`820821То же, что [`place_slaves()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.place_slaves): возвращает дочерние виджеты, управляемые этим контейнером с помощью менеджера геометрии place.822823Добавлено в версии 3.15.824825Методы с префиксами `bind` и `unbind` связывают шаблоны событий с колбэками и удаляют эти связи.826827#### `bind(sequence=None, func=None, add=None)`828829Привязывает шаблон события *sequence* на этом виджете к вызываемому объекту *func*.830831*sequence* – это шаблон события, например `'<Button-1>'` (щелчок мыши) или `'<KeyPress-a>'`, и, возможно, объединение нескольких таких шаблонов, которые должны произойти один за другим. При наступлении события *func* вызывается с экземпляром [`Event`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Event), описывающим его, в качестве единственного аргумента; если *func* возвращает строку `'break'`, дальнейшие привязки для этого события не вызываются.832833Если *add* равен true, *func* добавляется к любым функциям, уже привязанным к *sequence*; в противном случае он заменяет их. Привязка применяется только к этому виджету.834835`bind()` возвращает строковый идентификатор (*funcid*), который впоследствии можно передать в [`unbind()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.unbind), чтобы удалить привязку без утечки связанной команды Tcl.836837Если *func* опущен, вернуть привязку, связанную с *sequence*; если также опущен *sequence*, вернуть список всех последовательностей, для которых существуют привязки на этом виджете.838839#### `bind_class(className, sequence=None, func=None, add=None)`840841Как [`bind()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.bind), но привязывает *func* к тегу привязки *className*, а не к отдельному виджету, так что привязка применяется к каждому виджету, имеющему этот тег. *className* обычно является именем класса виджета, например `'Button'`, в этом случае привязка влияет на все виджеты этого класса. Набор тегов привязки для виджета можно просмотреть и изменить с помощью [`bindtags()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.bindtags).842843Остальные аргументы и возвращаемое значение такие же, как для [`bind()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.bind).844845#### `bind_all(sequence=None, func=None, add=None)`846847Как [`bind()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.bind), но привязывает *func* к специальному тегу привязки `'all'`, так что привязка применяется к каждому виджету в приложении.848849Остальные аргументы и возвращаемое значение такие же, как для [`bind()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.bind).850851#### `unbind(sequence, funcid=None)`852853Удаляет привязки для шаблона события *sequence* на этом виджете.854855Если указан *funcid*, удаляется только функция, идентифицируемая им (значение, возвращённое предыдущим вызовом [`bind()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.bind)), а связанная с ней команда Tcl удаляется. В противном случае уничтожаются все привязки для *sequence*, и он остаётся непривязанным.856857Изменено в версии 3.13: Если указан *funcid*, отвязывается только этот колбэк; остальные колбэки, привязанные к *sequence*, сохраняются.858859#### `unbind_class(className, sequence)`860861Удаляет все привязки для шаблона события *sequence* из тега привязки *className*. См. [`bind_class()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.bind_class).862863#### `unbind_all(sequence)`864865Удаляет все привязки для шаблона события *sequence* из специального тега привязки `'all'`. См. [`bind_all()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.bind_all).866867#### `bindtags(tagList=None)`868869Если *tagList* опущен, возвращает кортеж тегов привязки, связанных с этим виджетом. Когда в виджете происходит событие, оно применяется к каждому из тегов привязки виджета по порядку, и для каждого тега выполняется наиболее подходящая привязка. По умолчанию виджет имеет четыре тега привязки: собственное имя пути, его класс виджета, имя пути ближайшего предка верхнего уровня и `'all'`, именно в таком порядке.870871Если указан *tagList*, он должен быть последовательностью строк; теги привязки виджета устанавливаются равными его элементам, что определяет порядок, в котором вычисляются привязки.872873Методы с префиксом `event_` определяют виртуальные события и генерируют события программно.874875#### `event_add(virtual, *sequences)`876877Связывает виртуальное событие *virtual*, имя которого имеет форму `'<<Paste>>'`, с каждым из физических шаблонов событий, заданных *sequences*, так что виртуальное событие срабатывает всякий раз, когда происходит любое из них. Если *virtual* уже определён, новые последовательности добавляются к уже существующим.878879#### `event_delete(virtual, *sequences)`880881Удаляет каждую из *sequences* из тех, что связаны с виртуальным событием *virtual*. Последовательности, которые в данный момент не связаны с *virtual*, игнорируются. Если *sequences* не указаны, удаляются все физические последовательности событий, так что *virtual* больше не срабатывает.882883#### `event_generate(sequence, **kw)`884885Генерирует событие *sequence* на этом виджете и обеспечивает его обработку так, как если бы оно поступило от оконной системы. *sequence* должен быть одиночным шаблоном события, например `'<Button-1>'` или `'<<Paste>>'`, а не объединением нескольких. Именованные аргументы задают дополнительные поля события, например *x* и *y* для положения указателя, или *when* для управления моментом обработки события; полный список приведён на странице руководства Tk `event`.886887#### `event_info(virtual=None)`888889Если *virtual* опущен, возвращает кортеж всех виртуальных событий, которые в настоящее время определены. Если указан *virtual*, возвращает кортеж физических последовательностей событий, связанных с ним в настоящее время, или пустой кортеж, если он не определён.890891Методы с префиксом `after` планируют выполнение колбэков после задержки или когда приложение находится в состоянии простоя.892893#### `after(ms, func=None, *args, **kw)`894895Планирует вызов вызываемого объекта *func* через *ms* миллисекунд с передачей ему *args* и *kw* в качестве позиционных и именованных аргументов. Возвращает идентификатор, который можно передать в [`after_cancel()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.after_cancel) для отмены вызова.896897Если *func* опущен, вместо этого приостановить выполнение на *ms* миллисекунд, не обрабатывая события в течение этого времени, и вернуть `None`.898899Изменено в версии 3.10: *func* теперь может быть любым вызываемым объектом, а не только функцией.900901Изменено в версии 3.14: Именованные аргументы теперь передаются в *func*.902903#### `after_cancel(id)`904905Отменяет колбэк, ранее запланированный с помощью [`after()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.after) или [`after_idle()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.after_idle). *id* должен быть идентификатором, возвращённым одним из этих методов; передача значения, не являющегося таким идентификатором, вызывает [`ValueError`](https://python-all.ru/3.16/library/exceptions.html#ValueError). Если колбэк уже выполнен или отменён, это не оказывает эффекта.906907Изменено в версии 3.7: Передача `None` (или любого ложного значения) в качестве *id* теперь вызывает [`ValueError`](https://python-all.ru/3.16/library/exceptions.html#ValueError).908909#### `after_idle(func, *args, **kw)`910911Планирует вызов вызываемого объекта *func* с передачей ему *args* и *kw*, когда главный цикл Tk в следующий раз станет бездействующим, то есть когда у него не будет других событий для обработки. Возвращает идентификатор, который можно передать в [`after_cancel()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.after_cancel) для отмены вызова.912913Изменено в версии 3.14: Именованные аргументы теперь передаются в *func*.914915#### `after_info(id=None)`916917Если *id* опущен, возвращает кортеж идентификаторов всех колбэков, текущих запланированных с помощью [`after()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.after) и [`after_idle()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.after_idle) для данного интерпретатора.918919Если *id* указан, он должен идентифицировать колбэк, который ещё не выполнен или не отменён, и возвращаемое значение представляет собой кортеж `(script, type)`, где *script* ссылается на вызываемую функцию, а *type* – это либо `'idle'`, либо `'timer'`. Вызывается [`TclError`](https://python-all.ru/3.16/library/tkinter.html#tkinter.TclError), если *id* не существует.920921Добавлено в версии 3.13.922923#### `mainloop(n=0)`924925Входит в цикл событий Tk, который обрабатывает события до тех пор, пока все окна не будут уничтожены. Обычно вызывается один раз, на корневом окне, для запуска приложения.926927#### `quit()`928929Завершает интерпретатор Tcl, в результате чего [`mainloop()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.mainloop) возвращает управление.930931#### `update()`932933Входит в цикл событий до тех пор, пока все ожидающие события, включая бездействующие колбэки, не будут обработаны. Это обновляет отображение и обрабатывает любые события, которые уже находятся в очереди, после чего возвращает управление.934935#### `update_idletasks()`936937Входит в цикл событий до тех пор, пока не будут вызваны все ожидающие бездействующие колбэки. Это обновляет отображение окон, например после изменения геометрии, но не обрабатывает события, вызванные пользователем.938939#### `wait_variable(name)`940941Ожидает, пока переменная Tcl *name* не будет изменена, продолжая при этом обрабатывать события, чтобы приложение оставалось отзывчивым. *name* обычно является экземпляром [`Variable`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable), таким как [`IntVar`](https://python-all.ru/3.16/library/tkinter.html#tkinter.IntVar) или [`StringVar`](https://python-all.ru/3.16/library/tkinter.html#tkinter.StringVar).942943[`waitvar()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.waitvar) является псевдонимом `wait_variable()`.944945#### `wait_window(window=None)`946947Ожидает, пока *window* не будет уничтожено, продолжая при этом обрабатывать события. Если *window* опущен, используется данный виджет. Обычно используется для ожидания завершения взаимодействия пользователя с диалоговым окном.948949#### `wait_visibility(window=None)`950951Ожидает, пока состояние видимости *window* не изменится, например, когда оно впервые появляется на экране, продолжая при этом обрабатывать события. Если *window* опущен, используется данный виджет. Обычно используется для ожидания, пока новое окно не станет видимым, прежде чем выполнять с ним какие-либо действия.952953Методы с префиксом `focus_` управляют фокусом ввода с клавиатуры.954955#### `focus()`956957Направляет фокус ввода с клавиатуры для дисплея данного виджета на этот виджет. Если приложение в данный момент не имеет фокуса ввода на дисплее этого виджета, виджет запоминается как окно фокуса для своего верхнего уровня, и фокус будет перенаправлен на него в следующий раз, когда оконный менеджер передаст фокус верхнему уровню. `focus()` – это псевдоним `focus_set()`, за исключением виджетов [`Canvas`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas) и [`ttk.Treeview`](https://python-all.ru/3.16/library/tkinter.ttk.html#tkinter.ttk.Treeview), которые предоставляют собственный метод `focus()`.958959#### `focus_force()`960961Направляет фокус ввода с клавиатуры на этот виджет, даже если приложение в данный момент не имеет фокуса ввода для дисплея виджета. Этот метод следует использовать с осторожностью, если вообще использовать; обычно приложению следует дожидаться, пока оконный менеджер сам передаст ему фокус, а не захватывать его.962963#### `focus_get()`964965Возвращает виджет, который в данный момент имеет фокус клавиатуры в приложении, или `None`, если ни один виджет в приложении не имеет фокуса. Используйте [`focus_displayof()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.focus_displayof) для корректной работы с несколькими дисплеями.966967#### `focus_displayof()`968969Возвращает виджет, который в данный момент имеет фокус клавиатуры на дисплее, где расположен этот виджет, или `None`, если ни один виджет в приложении не имеет фокуса на этом дисплее.970971#### `focus_lastfor()`972973Возвращает последний виджет, который имел фокус клавиатуры среди всех виджетов на том же верхнем уровне, что и этот виджет; это виджет, который получит фокус в следующий раз, когда оконный менеджер передаст фокус этому верхнему уровню. Если ни один виджет на этом верхнем уровне никогда не имел фокуса, или если последний виджет с фокусом был удалён, возвращается сам верхний уровень.974975#### `tk_focusFollowsMouse()`976977Перенастраивает Tk на использование неявной модели фокуса, в которой фокус устанавливается на виджет при входе в него указателя мыши. После включения эту модель непросто отключить.978979#### `tk_focusNext()`980981Возвращает следующий виджет после данного в порядке обхода клавиатуры, или `None`, если такого нет. Порядок обхода: сначала следующий дочерний элемент, затем рекурсивно дочерние элементы этого дочернего элемента, а затем следующий родственный элемент, расположенный выше в порядке наложения. Виджет пропускается, если его опция `takefocus` имеет значение `0`. Этот метод используется в привязках по умолчанию для клавиши `Tab`.982983#### `tk_focusPrev()`984985Возвращает предыдущий виджет перед данным в порядке обхода клавиатуры, или `None`, если такого нет. См. [`tk_focusNext()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.tk_focusNext) для описания порядка. Этот метод используется в привязках по умолчанию для клавиши `Shift`-`Tab`.986987Методы с префиксом `grab_` устанавливают и запрашивают захват ввода, который направляет все события ввода на один виджет.988989#### `grab_set()`990991Устанавливает локальный захват на этот виджет. Захват ограничивает события указателя этим виджетом и его потомками: пока указатель находится вне поддерева виджета, нажатия и отпускания кнопок, а также перемещения указателя передаются виджету захвата, а окна за пределами поддерева становятся нечувствительными до освобождения захвата. Локальный захват влияет только на приложение, которое его установило. Любой предыдущий захват, установленный этим приложением на дисплее виджета, автоматически освобождается. Установка захвата – обычный способ сделать диалог модальным: пока захват активен, пользователь не может взаимодействовать с другими окнами приложения.992993#### `grab_set_global()`994995Устанавливает глобальный захват на этот виджет. Глобальный захват подобен локальному захвату, устанавливаемому методом [`grab_set()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grab_set), но он блокирует все остальные приложения на экране, так что только поддерево этого виджета чувствительно к событиям указателя, а также захватывает клавиатуру. Следует соблюдать осторожность: глобальный захват может легко сделать дисплей неработоспособным, поскольку другие приложения перестают получать события до его освобождения.996997#### `grab_release()`998999Освобождает захват на этот виджет, если он установлен; в противном случае ничего не делает.10001001#### `grab_current()`10021003Возвращает виджет, который в данный момент удерживает захват в этом приложении для дисплея данного виджета, или `None`, если такого виджета нет.10041005#### `grab_status()`10061007Возвращает `None`, если на данный момент на этом виджете не установлен захват, `"local"`, если установлен локальный захват, или `"global"`, если установлен глобальный захват.10081009Методы с префиксом `selection_` извлекают и управляют X-выделением.10101011#### `selection_clear(**kw)`10121013Очищает X-выделение, так чтобы ни одно окно больше не владело им. Очищаемое выделение задаётся именованным аргументом *selection*, именем атома, таким как `'PRIMARY'` или `'CLIPBOARD'`; по умолчанию используется `PRIMARY`. Именованный аргумент *displayof* задаёт виджет, определяющий дисплей, на котором следует выполнять операцию; по умолчанию используется этот виджет.10141015Это переопределяется виджетами [`Entry`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Entry), [`Listbox`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox) и [`Spinbox`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox), где `selection_clear()` вместо этого очищает собственное выделение виджета.10161017#### `selection_get(**kw)`10181019Возвращает содержимое текущего X-выделения. Именованный аргумент *selection* задаёт имя выделения; по умолчанию используется `PRIMARY`. Именованный аргумент *type* указывает форму, в которой должны быть возвращены данные (нужный целевой тип преобразования) – имя атома, такое как `'STRING'` или `'FILE_NAME'`; по умолчанию используется `STRING`, за исключением X11, где сначала пробуется `UTF8_STRING`, а в качестве запасного варианта применяется `STRING`. Именованный аргумент *displayof* задаёт виджет, определяющий дисплей, с которого следует получить выделение; по умолчанию используется этот виджет.10201021#### `selection_handle(command, **kw)`10221023Регистрирует *command* как обработчик для предоставления X-выделения, которым владеет этот виджет, когда другое приложение запрашивает его. При извлечении выделения *command* вызывается с двумя аргументами: начальным смещением символа и максимальным количеством возвращаемых символов; он должен вернуть не более этого количества символов выделения, начиная с указанного смещения; для очень длинных выделений он вызывается многократно с увеличивающимися смещениями. Именованный аргумент *selection* задаёт имя выделения (по умолчанию `PRIMARY`), а именованный аргумент *type* указывает форму выделения, которую предоставляет обработчик (например, `'STRING'` или `'FILE_NAME'`, по умолчанию `STRING`).10241025#### `selection_own(**kw)`10261027Делает этот виджет владельцем X-выделения на его дисплее. Предыдущий владелец, если он был, уведомляется о потере выделения. Именованный аргумент *selection* задаёт имя выделения; по умолчанию используется `PRIMARY`.10281029#### `selection_own_get(**kw)`10301031Возвращает виджет в этом приложении, которому принадлежит выделение X на дисплее, содержащем этот виджет, или `None`, если ни один виджет в этом приложении не владеет выделением. Именованный аргумент *selection* задаёт название выделения; значение по умолчанию – `PRIMARY`. Именованный аргумент *displayof* задаёт виджет, определяющий запрашиваемый дисплей; значение по умолчанию – этот виджет.10321033Методы с префиксом `clipboard_` управляют буфером обмена.10341035#### `clipboard_append(string, **kw)`10361037Добавляет *string* в буфер обмена Tk и заявляет права владения буфером обмена на дисплее этого виджета. Перед добавлением буфер обмена следует очистить с помощью [`clipboard_clear()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.clipboard_clear); все добавления должны быть завершены до возврата в цикл событий, чтобы буфер обмена обновился атомарно. Именованный аргумент *type* задаёт форму данных – имя атома, например `'STRING'` или `'FILE_NAME'` (по умолчанию `STRING`), а именованный аргумент *format* задаёт представление, используемое для передачи (по умолчанию `STRING`). Именованный аргумент *displayof* задаёт виджет, определяющий целевой дисплей; значение по умолчанию – этот виджет. Содержимое можно получить с помощью [`clipboard_get()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.clipboard_get) или [`selection_get()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.selection_get).10381039#### `clipboard_clear(**kw)`10401041Заявляет права владения буфером обмена на дисплее этого виджета и удаляет предыдущее содержимое. Именованный аргумент *displayof* задаёт виджет, определяющий целевой дисплей; значение по умолчанию – этот виджет.10421043#### `clipboard_get(**kw)`10441045Извлекает данные из буфера обмена на дисплее этого виджета. Именованный аргумент *type* задаёт форму, в которой должны быть возвращены данные – имя атома, например `'STRING'` или `'FILE_NAME'`; по умолчанию `STRING`, за исключением X11, где сначала пробуется `UTF8_STRING`, а `STRING` используется как запасной вариант. Именованный аргумент *displayof* задаёт виджет, определяющий дисплей; значение по умолчанию – корневое окно приложения. Это эквивалентно `selection_get(selection='CLIPBOARD')`.10461047Методы с префиксом `option_` запрашивают и изменяют базу данных опций Tk.10481049#### `option_add(pattern, value, priority=None)`10501051Добавляет опцию в базу данных опций Tk, связывающую *value* с *pattern*. *pattern* состоит из имён и/или классов, разделённых звёздочками или точками, в обычном формате X. *priority* – целое число от 0 до 100 или одно из символических имён `'widgetDefault'` (20), `'startupFile'` (40), `'userDefault'` (60) или `'interactive'` (80); по умолчанию `interactive`.10521053#### `option_clear()`10541055Очищает базу данных опций Tk. Опции по умолчанию из свойства `RESOURCE_MANAGER` или файла `.Xdefaults` автоматически перезагружаются при следующем добавлении или удалении опции из базы.10561057#### `option_get(name, className)`10581059Возвращает значение опции из базы данных опций Tk, соответствующей этому виджету по *name* и *className*, или пустую строку, если соответствующей записи нет. Если совпадает несколько записей, возвращается та, у которой наивысший приоритет, а среди записей с равным приоритетом – добавленная последней.10601061#### `option_readfile(fileName, priority=None)`10621063Читает файл с именем *fileName*, который должен иметь стандартный формат базы данных ресурсов X, например `.Xdefaults`, и добавляет все указанные в нём опции в базу данных опций Tk. *priority* интерпретируется так же, как для [`option_add()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.option_add), и по умолчанию равен `interactive`.10641065#### `bell(displayof=0)`10661067Воспроизводит звонок на дисплее этого виджета, используя текущие настройки звонка дисплея, и сбрасывает хранитель экрана для экрана. Если *displayof* задан как виджет, звонок воспроизводится на дисплее этого виджета.10681069#### `tk_setPalette(background, /)`10701071#### `tk_setPalette(*args, **kw)`10721073Устанавливает новую цветовую схему для всех элементов виджетов Tk. Существующие виджеты обновляются, а база данных опций изменяется так, чтобы будущие виджеты использовали новые цвета. Если передан один цветовой аргумент, он считается обычным цветом фона, на основе которого вычисляется полная палитра. В качестве альтернативы аргументы могут быть заданы как пары *name*/*value*, задающие отдельные опции в базе данных опций. Распознаваемые имена опций: `activeBackground`, `activeForeground`, `background`, `disabledForeground`, `foreground`, `highlightBackground`, `highlightColor`, `insertBackground`, `selectColor`, `selectBackground`, `selectForeground` и `troughColor`; для любых неуказанных опций вычисляются разумные значения по умолчанию.10741075#### `tk_bisque()`10761077Восстанавливает цвета приложения к светлой коричневой (bisque) цветовой схеме, использовавшейся в Tk 3.6 и более ранних версиях. Предусмотрено для обратной совместимости.10781079#### `tk_strictMotif(boolean=None)`10801081Запрашивает или устанавливает, должен ли внешний вид Tk строго соответствовать Motif. Значение *boolean*, равное true, включает строгое соответствие Motif (например, отсутствие изменения цвета при наведении мыши на ползунок). Возвращает результирующую настройку.10821083#### `tk_appname(name=None)`10841085Запрашивает или задаёт имя, используемое для взаимодействия с этим приложением через команду `send`. Без аргумента возвращает текущее имя; в противном случае меняет его на *name* и возвращает фактически установленное имя, к которому может быть добавлен суффикс для обеспечения уникальности среди приложений на дисплее.10861087Добавлено в версии 3.16.0a0 (не выпущено).10881089#### `tk_useinputmethods(boolean=None, *, displayof=0)`10901091Запрашивает или задаёт, использует ли Tk X Input Methods (XIM) для фильтрации событий, и возвращает результирующее состояние. Это имеет значение только на X11; если поддержка XIM недоступна, всегда возвращает `False`.10921093Добавлено в версии 3.16.0a0 (не выпущено).10941095#### `tk_caret(*, x=None, y=None, height=None)`10961097Устанавливает или запрашивает положение каретки для отображения виджета. Каретка – это позиция вставки для каждого дисплея, используемая для глобальной индикации фокуса (для доступности) и для размещения окна метода ввода (XIM или IME). Без аргумента возвращает текущее положение в виде словаря с ключами `'x'`, `'y'` и `'height'`; в противном случае обновляет заданные координаты.10981099Добавлено в версии 3.16.0a0 (не выпущено).11001101#### `tk_scaling(number=None, *, displayof=0)`11021103Запрашивает или задаёт коэффициент масштабирования, используемый Tk для преобразования между физическими единицами (такими как пункты, дюймы или миллиметры) и пикселями, выраженный как количество пикселей на пункт (где пункт равен 1/72 дюйма). Без аргумента возвращает текущий коэффициент; в противном случае устанавливает его в число с плавающей запятой *number*.11041105Добавлено в версии 3.16.0a0 (не выпущено).11061107#### `tk_inactive(reset=False, *, displayof=0)`11081109Возвращает количество миллисекунд с момента последнего взаимодействия пользователя с системой, или `-1`, если оконная система этого не поддерживает. Если *reset* равно true, сбрасывает таймер неактивности в ноль и возвращает `None`.11101111Добавлено в версии 3.16.0a0 (не выпущено).11121113Методы с префиксом `busy_` управляют состоянием занятости окна, при котором отображается курсор занятости и игнорируется пользовательский ввод.11141115#### `tk_busy_hold(**kw)`11161117Делает этот виджет занятым. Перед виджетом помещается прозрачное окно, так что он и все его потомки в иерархии виджетов блокируются от событий указателя и отображают курсор занятости. Обычно сразу после этого следует вызвать [`update()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.update), чтобы операция удержания вступила в силу до того, как приложение начнёт обработку.11181119Единственная поддерживаемая опция конфигурации – *cursor*, курсор, отображаемый пока виджет занят; он может принимать любое из значений, принимаемых `configure()`.11201121[`busy_hold()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.busy_hold), [`busy()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.busy) и [`tk_busy()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.tk_busy) являются псевдонимами `tk_busy_hold()`.11221123Добавлено в версии 3.13.11241125#### `tk_busy_configure(cnf=None, **kw)`11261127Запрос или изменение параметров конфигурации занятого окна. Виджет должен быть предварительно переведён в состояние «занят» с помощью [`tk_busy_hold()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.tk_busy_hold). Без аргументов возвращает словарь со всеми доступными опциями; если *cnf* – имя опции, возвращает кортеж с её описанием. В противном случае устанавливает указанные опции в заданные значения. Опции могут принимать любые значения, поддерживаемые `tk_busy_hold()`.11281129База данных опций обращается по имени или классу виджета. Например, если виджет [`Frame`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Frame) с именем `frame` должен быть сделан занятым, для него можно указать курсор ожидания с помощью любого из вызовов:11301131```python1132w.option_add('*frame.busyCursor', 'gumby')1133w.option_add('*Frame.BusyCursor', 'gumby')1134```11351136[`busy_configure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.busy_configure), [`busy_config()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.busy_config) и [`tk_busy_config()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.tk_busy_config) – это псевдонимы `tk_busy_configure()`.11371138Добавлено в версии 3.13.11391140#### `tk_busy_cget(option)`11411142Возвращает текущее значение *опции* конфигурации занятого виджета. Виджет должен быть предварительно переведён в состояние «занят» с помощью [`tk_busy_hold()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.tk_busy_hold), а *опция* может принимать любые значения, поддерживаемые этим методом.11431144[`busy_cget()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.busy_cget) является псевдонимом `tk_busy_cget()`.11451146Добавлено в версии 3.13.11471148#### `tk_busy_forget()`11491150Переводит виджет из состояния «занят» обратно, освобождая ресурсы (включая прозрачное окно), выделенные при его занятости. Виджет снова начнёт получать события пользователя. Эти ресурсы также освобождаются при уничтожении виджета.11511152[`busy_forget()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.busy_forget) является псевдонимом `tk_busy_forget()`.11531154Добавлено в версии 3.13.11551156#### `tk_busy_status()`11571158Возвращает `True`, если виджет в данный момент занят, иначе `False`.11591160[`busy_status()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.busy_status) является псевдонимом `tk_busy_status()`.11611162Добавлено в версии 3.13.11631164#### `tk_busy_current(pattern=None)`11651166Возвращает список виджетов, которые в данный момент заняты. Если указан *pattern*, возвращаются только занятые виджеты, чьи имена путей соответствуют шаблону.11671168[`busy_current()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.busy_current) является псевдонимом `tk_busy_current()`.11691170Добавлено в версии 3.13.11711172Методы с префиксом `winfo_` получают информацию об окнах, управляемых Tk.11731174#### `winfo_atom(name, displayof=0)`11751176Возвращает целочисленный идентификатор атома с именем *name*, создавая новый атом, если такого не существует. Если указан *displayof*, атом ищется на экране этого окна; в противном случае – на экране главного окна приложения.11771178#### `winfo_atomname(id, displayof=0)`11791180Возвращает текстовое имя атома с целочисленным идентификатором *id*. Это обратная операция к [`winfo_atom()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.winfo_atom). Если указан *displayof*, идентификатор ищется на экране этого окна; в противном случае – на экране главного окна приложения.11811182#### `winfo_cells()`11831184Возвращает количество ячеек в цветовой карте (colormap) виджета.11851186#### `winfo_children()`11871188Возвращает список виджетов, являющихся дочерними по отношению к данному виджету, в порядке стека от нижнего к верхнему. Окна верхнего уровня возвращаются как дочерние своих логических родителей.11891190#### `winfo_class()`11911192Возвращает имя класса виджета.11931194#### `winfo_colormapfull()`11951196Возвращает `True`, если известно, что цветовая карта виджета заполнена, иначе `False`.11971198#### `winfo_containing(rootX, rootY, displayof=0)`11991200Возвращает виджет, содержащий точку с координатами *rootX* и *rootY*, или `None`, если ни одно окно в приложении не содержит эту точку. Координаты задаются в экранных единицах в системе координат корневого окна. Если указан *displayof*, координаты относятся к экрану, содержащему это окно; в противном случае – к экрану главного окна приложения.12011202#### `winfo_depth()`12031204Возвращает глубину цвета виджета, то есть количество бит на пиксель.12051206#### `winfo_exists()`12071208Возвращает `1`, если виджет существует, и `0` в противном случае.12091210#### `winfo_fpixels(number)`12111212Возвращает число с плавающей запятой, показывающее количество пикселей в виджете, соответствующее экранному расстоянию *number* (например, `"2.0c"` или `"1i"`). Результат может быть дробным; для округлённого целого значения используйте [`winfo_pixels()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.winfo_pixels).12131214#### `winfo_geometry()`12151216Возвращает геометрию виджета в формате `widthxheight+x+y`. Все размеры указаны в пикселях. Смещение может быть отрицательным; см. [`geometry()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.geometry).12171218#### `winfo_height()`12191220Возвращает высоту виджета в пикселях. При первом создании окна его высота равна 1 пикселю; впоследствии она изменяется менеджером геометрии. См. также [`winfo_reqheight()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.winfo_reqheight).12211222#### `winfo_id()`12231224Возвращает низкоуровневый платформенно-зависимый идентификатор виджета. В Unix это идентификатор X-окна, а в Windows – дескриптор окна.12251226#### `winfo_interps(displayof=0)`12271228Возвращает кортеж имён всех интерпретаторов Tcl, зарегистрированных в данный момент для конкретного дисплея. Если указан *displayof*, возвращаемое значение относится к дисплею этого окна; в противном случае – к дисплею главного окна приложения.12291230#### `winfo_isdark()`12311232В macOS и Windows возвращает `True`, если виджет находится в «тёмном режиме», и `False` в противном случае. На X11 всегда возвращает `False`.12331234Добавлено в версии 3.16.0a0 (не выпущена): Требуется Tk 9.1 или новее.12351236#### `winfo_ismapped()`12371238Возвращает `1`, если виджет в данный момент отображён, и `0` в противном случае.12391240#### `winfo_manager()`12411242Возвращает имя менеджера геометрии, который в данный момент управляет виджетом, или пустую строку, если он не управляется ни одним менеджером геометрии.12431244#### `winfo_name()`12451246Возвращает имя виджета внутри его родительского элемента, в отличие от полного путевого имени.12471248#### `winfo_parent()`12491250Возвращает путевое имя родительского элемента виджета или пустую строку, если виджет является главным окном приложения.12511252#### `winfo_pathname(id, displayof=0)`12531254Возвращает путевое имя окна, идентификатор которого равен *id*. Если указан *displayof*, идентификатор ищется на дисплее этого окна; в противном случае – на дисплее главного окна приложения.12551256#### `winfo_pixels(number)`12571258Возвращает количество пикселей в виджете, соответствующее экранному расстоянию *number* (например, `"2.0c"` или `"1i"`). Результат округляется до ближайшего целого; для получения дробного результата используйте [`winfo_fpixels()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.winfo_fpixels).12591260#### `winfo_pointerx()`12611262Возвращает координату *x* указателя в пикселях относительно корневого окна экрана (или виртуального корня, если он используется). Возвращает `-1`, если указатель находится не на том же экране, что и виджет.12631264#### `winfo_pointerxy()`12651266Возвращает координаты указателя в виде кортежа `(x, y)` в пикселях относительно корневого окна экрана (или виртуального корня, если он используется). Обе координаты равны `-1`, если указатель находится не на том же экране, что и виджет.12671268#### `winfo_pointery()`12691270Возвращает координату *y* указателя в пикселях относительно корневого окна экрана (или виртуального корня, если он используется). Возвращает `-1`, если указатель находится не на том же экране, что и виджет.12711272#### `winfo_reqheight()`12731274Возвращает запрошенную высоту виджета в пикселях. Это значение используется менеджером геометрии виджета для вычисления его геометрии.12751276#### `winfo_reqwidth()`12771278Возвращает запрошенную ширину виджета в пикселях. Это значение используется менеджером геометрии виджета для вычисления его геометрии.12791280#### `winfo_rgb(color)`12811282Возвращает кортеж `(r, g, b)` из интенсивностей красного, зелёного и синего в диапазоне от 0 до 65535, соответствующих *color* в виджете. *color* может быть задан в любой форме, допустимой для параметра цвета.12831284#### `winfo_rootx()`12851286Возвращает координату *x* в корневом окне экрана для верхнего левого угла границы виджета (или самого виджета, если у него нет границы).12871288#### `winfo_rooty()`12891290Возвращает координату *y* в корневом окне экрана для верхнего левого угла границы виджета (или самого виджета, если у него нет границы).12911292#### `winfo_screen()`12931294Возвращает имя экрана, связанного с виджетом, в форме `displayName.screenIndex`.12951296#### `winfo_screencells()`12971298Возвращает количество ячеек в цветовой карте по умолчанию для экрана виджета.12991300#### `winfo_screendepth()`13011302Возвращает глубину корневого окна экрана виджета, то есть количество бит на пиксель.13031304#### `winfo_screenheight()`13051306Возвращает высоту экрана виджета в пикселях.13071308#### `winfo_screenmmheight()`13091310Возвращает высоту экрана виджета в миллиметрах.13111312#### `winfo_screenmmwidth()`13131314Возвращает ширину экрана виджета в миллиметрах.13151316#### `winfo_screenvisual()`13171318Возвращает класс визуализации по умолчанию для экрана виджета: `"directcolor"`, `"grayscale"`, `"pseudocolor"`, `"staticcolor"`, `"staticgray"`, или `"truecolor"`.13191320#### `winfo_screenwidth()`13211322Возвращает ширину экрана виджета в пикселях.13231324#### `winfo_server()`13251326Возвращает строку с информацией о сервере дисплея виджета. Точный формат этой строки может различаться в зависимости от платформы.13271328#### `winfo_toplevel()`13291330Возвращает окно верхнего уровня иерархии, содержащее виджет. В стандартном Tk это всегда виджет [`Toplevel`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Toplevel).13311332#### `winfo_viewable()`13331334Возвращает `1`, если виджет и все его предки вплоть до ближайшего окна верхнего уровня отображены, и `0` в противном случае.13351336#### `winfo_visual()`13371338Возвращает класс визуализации для виджета: `"directcolor"`, `"grayscale"`, `"pseudocolor"`, `"staticcolor"`, `"staticgray"`, или `"truecolor"`.13391340#### `winfo_visualid()`13411342Возвращает X-идентификатор визуального представления виджета.13431344#### `winfo_visualsavailable(includeids=False)`13451346Возвращает список доступных для экрана виджета визуальных представлений. Каждый элемент состоит из класса визуального представления (см. [`winfo_visual()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.winfo_visual)) и целочисленной глубины. Если *includeids* равно true, также включается X-идентификатор визуального представления.13471348#### `winfo_vrootheight()`13491350Возвращает высоту виртуального корневого окна, связанного с виджетом, если таковое существует; в противном случае возвращает высоту экрана виджета.13511352#### `winfo_vrootwidth()`13531354Возвращает ширину виртуального корневого окна, связанного с виджетом, если таковое существует; в противном случае возвращает ширину экрана виджета.13551356#### `winfo_vrootx()`13571358Возвращает смещение *x* виртуального корневого окна, связанного с виджетом, относительно корневого окна его экрана. Обычно равно нулю или отрицательное, и равно `0`, если виртуальное корневое окно отсутствует.13591360#### `winfo_vrooty()`13611362Возвращает смещение *y* виртуального корневого окна, связанного с виджетом, относительно корневого окна его экрана. Обычно равно нулю или отрицательное, и равно `0`, если виртуальное корневое окно отсутствует.13631364#### `winfo_width()`13651366Возвращает ширину виджета в пикселях. При первом создании окна его ширина равна 1 пикселю; впоследствии она изменяется менеджером геометрии. См. также [`winfo_reqwidth()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.winfo_reqwidth).13671368#### `winfo_x()`13691370Возвращает *x*-координату верхнего левого угла рамки виджета (или самого виджета, если у него нет рамки) в родительском контейнере.13711372#### `winfo_y()`13731374Возвращает *y*-координату верхнего левого угла рамки виджета (или самого виджета, если у него нет рамки) в родительском контейнере.13751376#### `info_patchlevel()`13771378Возвращает уровень патча Tcl/Tk в виде именованного кортежа с теми же пятью полями, что и [`sys.version_info`](https://python-all.ru/3.16/library/sys.html#sys.version_info): *major*, *minor*, *micro*, *releaselevel* и *serial*. *releaselevel* принимает значения `'alpha'`, `'beta'` или `'final'`. При преобразовании в строку получается версия в обычной записи Tcl/Tk, например `'9.0.3'` для финального релиза или `'9.1b2'` для предварительной версии.13791380Добавлено в версии 3.12.13811382#### `class tkinter.Wm`13831384Миксин `Wm` предоставляет доступ к оконному менеджеру, позволяя приложению управлять такими вещами, как заголовок, геометрия и значок окна верхнего уровня, способ его изменения размера, а также реакция на протоколы оконного менеджера. Он встраивается в [`Tk`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Tk) и [`Toplevel`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Toplevel), поэтому его методы доступны для любого окна верхнего уровня. Каждый метод имеет два эквивалентных написания: короткое имя и имя с префиксом `wm_` (например, [`title()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.title) и [`wm_title()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_title)).13851386#### `aspect(minNumer=None, minDenom=None, maxNumer=None, maxDenom=None)`13871388Ограничивает соотношение сторон (отношение ширины к высоте) окна. Если указаны все четыре аргумента, оконный менеджер поддерживает соотношение между `minNumer/minDenom` и `maxNumer/maxDenom`; передача пустых строк снимает все существующие ограничения. Без аргументов возвращает кортеж из четырёх текущих значений или пустую строку, если ограничение соотношения не действует. [`wm_aspect()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_aspect) – это псевдоним `aspect()`.13891390#### `attributes(*args, return_python_dict=False, **kwargs)`13911392Запрашивает или задаёт платформо-зависимые атрибуты окна. Без аргументов возвращает платформо-зависимые флаги и их значения; передайте *return\_python\_dict* равным true, чтобы получить их в виде словаря. Одно имя опции, например `'alpha'`, возвращает значение этой опции, а опции задаются с помощью именованных аргументов (`alpha=0.5`).13931394Доступные атрибуты различаются в зависимости от платформы. Все платформы поддерживают:13951396***alpha***13971398Непрозрачность окна от `0.0` (полностью прозрачно) до `1.0` (непрозрачно). Если прозрачность не поддерживается, значение остаётся `1.0`.13991400***appearance***14011402Определяет, отображается ли окно в тёмном режиме в Windows и macOS: `'auto'`, `'light'` или `'dark'` (не действует на X11).14031404***fullscreen***14051406Определяет, развёрнуто ли окно на весь экран и не имеет ли границ.14071408***topmost***14091410Определяет, отображается ли окно поверх всех остальных окон.14111412Windows также поддерживает:14131414***disabled***14151416Определяет, находится ли окно в отключённом состоянии.14171418***toolwindow***14191420Определяет, использует ли окно стиль инструментального окна.14211422***transparentcolor***14231424Цвет, который становится полностью прозрачным, или пустая строка для отсутствия прозрачности.14251426macOS также поддерживает:14271428***класс***14291430Определяет, является ли базовое окно Aqua `nswindow` или `nspanel`; это можно установить только до создания окна.14311432***modified***14331434Состояние изменения, отображаемое кнопкой закрытия окна и значком-заместителем.14351436***notify***14371438Определяет, подпрыгивает ли значок приложения в доке, чтобы привлечь внимание.14391440***stylemask***14411442Маска стиля базового окна Aqua, задаваемая в виде списка имён битов, таких как `titled` или `resizable`.14431444***tabbingid***14451446Идентификатор группы вкладок, к которой принадлежит окно.14471448***tabbingmode***14491450Определяет, может ли окно быть открыто как вкладка: `'auto'`, `'preferred'` или `'disallowed'`.14511452***titlepath***14531454Путь к файлу, представленному значком-заместителем окна.14551456***transparent***14571458Определяет, является ли область содержимого прозрачной и отключена ли тень окна.14591460X11 также поддерживает:14611462***тип***14631464Тип окна или список типов в порядке предпочтения, который менеджер окон должен использовать для интерпретации окна, например `'dialog'` или `'splash'`.14651466***zoomed***14671468Определяет, развёрнуто ли окно на весь экран.14691470> **Примечание**1471>1472> Tk 8.6 добавил атрибут *type*, а Tk 9.0 добавил атрибуты *appearance*, *class*, *stylemask*, *tabbingid* и *tabbingmode*.14731474В X11 изменения применяются асинхронно, поэтому запрошенное значение может ещё не отражать самый последний запрос. [`wm_attributes()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_attributes) является псевдонимом `attributes()`.14751476Изменено в версии 3.13: Теперь отдельный атрибут можно запросить по имени без начального `-`, а атрибуты можно задавать с помощью именованных аргументов. Был добавлен параметр *return\_python\_dict*.14771478Устарело с версии 3.13: Установка атрибута путём передачи имени опции (с начальным `-`) и её значения в виде двух позиционных аргументов, как в `w.attributes('-alpha', 0.5)`, устарела; вместо этого используйте именованные аргументы.14791480#### `client(name=None)`14811482Сохраняет *name* (должно быть именем хоста, на котором выполняется приложение) в свойстве `WM_CLIENT_MACHINE` окна для использования оконным менеджером или менеджером сессий. Пустая строка удаляет это свойство. Без аргументов возвращает последнее установленное имя или пустую строку. [`wm_client()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_client) – это псевдоним `client()`.14831484#### `colormapwindows(*wlist)`14851486Управляет свойством `WM_COLORMAP_WINDOWS`, которое сообщает оконному менеджеру об окнах, имеющих частные цветовые карты. Если задан *wlist*, перезаписывает свойство этими окнами (их порядок – это приоритет для установки цветовых карт). Без аргументов возвращает список окон, указанных в данный момент в свойстве. [`wm_colormapwindows()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_colormapwindows) – это псевдоним `colormapwindows()`.14871488#### `command(value=None)`14891490Сохраняет *value* в свойстве `WM_COMMAND` окна для использования оконным менеджером или менеджером сессий; это должен быть список слов команды, использованной для запуска приложения. Пустая строка удаляет свойство. Без аргументов возвращает последнее установленное значение или пустую строку. [`wm_command()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_command) – это псевдоним `command()`.14911492#### `deiconify()`14931494Отображает окно в обычной (не свёрнутой) форме, отображая его на экране. Если окно ещё ни разу не отображалось, это гарантирует, что при первом отображении оно появится уже развёрнутым. В Windows окно также поднимается и получает фокус. [`wm_deiconify()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_deiconify) – это псевдоним `deiconify()`.14951496#### `focusmodel(model=None)`14971498Устанавливает или запрашивает модель фокуса для окна. *model* может быть `'active'` (окно заявляет о получении фокуса ввода для себя или своих потомков, даже когда фокус находится в другом приложении) или `'passive'` (окно полагается на оконный менеджер, чтобы тот дал ему фокус). Без аргумента возвращает текущую модель. По умолчанию используется `'passive'`, что предполагает команда `focus()`. [`wm_focusmodel()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_focusmodel) – это псевдоним `focusmodel()`.14991500#### `forget(window)`15011502Скрывает *window* с экрана, так что оно больше не управляется оконным менеджером. Затем [`Toplevel`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Toplevel) обрабатывается как [`Frame`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Frame), хотя его конфигурация `-menu` запоминается, и меню снова появляется, если виджет снова становится управляемым. [`wm_forget()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_forget) – это псевдоним `forget()`.15031504Не путать с [`Pack.forget()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Pack.forget).15051506Добавлено в версии 3.3.15071508#### `frame()`15091510Возвращает платформенно-зависимый идентификатор окна для самого внешнего декоративного фрейма, содержащего окно, если оконный менеджер поместил его в такой фрейм; в противном случае возвращает идентификатор самого окна. [`wm_frame()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_frame) – это псевдоним `frame()`.15111512#### `geometry(newGeometry=None)`15131514Устанавливает или запрашивает геометрию окна. *newGeometry* имеет форму `=widthxheight+x+y`, где любая из `=`, `widthxheight` и позиция `+x+y` может быть опущена. *width* и *height* задаются в пикселях (или в единицах сетки для окна с сеткой); позиция, перед которой стоит `+`, отсчитывается от левого или верхнего края экрана, а позиция, перед которой стоит `-`, – от правого или нижнего края. Смещение может быть отрицательным, как в `'200x100+-9+-8'`, когда край окна выходит за соответствующий край экрана. Пустая строка отменяет любую заданную пользователем геометрию, позволяя окну вернуться к своему естественному размеру. Без аргумента возвращает текущую геометрию в виде строки вида `'200x200+10+10'`. [`wm_geometry()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_geometry) – это псевдоним `geometry()`.15151516#### `grid(baseWidth=None, baseHeight=None, widthInc=None, heightInc=None)`15171518Управляет окном как окном с сеткой и определяет соотношение между единицами сетки и пикселями. *baseWidth* и *baseHeight* – это количество единиц сетки для внутреннего запрошенного размера окна, а *widthInc* и *heightInc* – это размеры в пикселях горизонтальной и вертикальной единицы сетки. Пустые строки отключают управление сеткой. Без аргументов возвращает кортеж из четырёх текущих значений или пустую строку, если окно не использует сетку. [`wm_grid()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_grid) – это псевдоним `grid()`.15191520Не путать с менеджером геометрии grid [`Grid.grid()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Grid.grid).15211522#### `group(pathName=None)`15231524Устанавливает или запрашивает лидера группы связанных окон. *pathName* задаёт путь к лидеру группы; оконный менеджер может, например, скрыть все окна в группе, когда лидер сворачивается. Пустая строка удаляет окно из любой группы. Без аргумента возвращает путь к текущему лидеру группы или пустую строку. [`wm_group()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_group) – это псевдоним `group()`.15251526#### `iconbadge(badge)`15271528Устанавливает значок для иконки окна, предназначенный для отображения в Dock (macOS), панели задач (Windows) или панели приложений (X11). *badge* может быть положительным целым числом (например, количество непрочитанных сообщений) или восклицательным знаком, чтобы указать на необходимость внимания; пустая строка удаляет значок. На X11 переменная `::tk::icons::base_icon(window)` должна быть установлена на изображение иконки окна, чтобы значок появился. [`wm_iconbadge()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_iconbadge) является псевдонимом `iconbadge()`.15291530Добавлено в версии 3.16.0a0 (не выпущена): Требуется Tk 9.0 или новее.15311532#### `iconbitmap(bitmap=None, default=None)`15331534Устанавливает или запрашивает битовую карту, используемую оконным менеджером для значка окна. *bitmap* задаёт битовую карту в одной из стандартных форм, принимаемых Tk; пустая строка отменяет текущую битовую карту значка. Без аргумента возвращает имя текущей битовой карты значка или пустую строку. В Windows аргумент *default* задаёт значок (например, файл `.ico`), применяемый ко всем окнам верхнего уровня, у которых нет собственного значка. [`wm_iconbitmap()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_iconbitmap) – это псевдоним `iconbitmap()`.15351536#### `iconify()`15371538Сворачивает окно. Если окно ещё не было отображено в первый раз, обеспечивает его отображение в свёрнутом состоянии при последующем отображении. [`wm_iconify()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_iconify) – это псевдоним `iconify()`.15391540#### `iconmask(bitmap=None)`15411542Устанавливает или запрашивает битовую карту, используемую в качестве маски для значка (см. [`iconbitmap()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.iconbitmap)). Если маска равна нулю, значок не отображается; если единице, показываются соответствующие биты битовой карты значка. Пустая строка отменяет текущую маску. Без аргумента возвращает имя текущей маски значка или пустую строку. [`wm_iconmask()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_iconmask) – это псевдоним `iconmask()`.15431544#### `iconname(newName=None)`15451546Устанавливает или запрашивает имя, отображаемое оконным менеджером внутри значка окна. Без аргумента возвращает текущее имя значка или пустую строку, если ничего не было установлено (в этом случае оконный менеджер обычно отображает заголовок окна). [`wm_iconname()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_iconname) – это псевдоним `iconname()`.15471548#### `iconphoto(default=False, *images)`15491550Устанавливает значок заголовка окна из одного или нескольких объектов [`PhotoImage`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PhotoImage), переданных в *images*. Можно передать несколько изображений разных размеров (например, 16×16 и 32×32), чтобы оконный менеджер мог выбрать подходящее. Данные изображения берутся как снимок на момент вызова; последующие изменения изображений не учитываются. Если *default* равно true, значок также применяется ко всем будущим окнам верхнего уровня. В macOS используется только первое изображение. [`wm_iconphoto()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_iconphoto) – псевдоним `iconphoto()`.15511552Добавлено в версии 3.3.15531554#### `iconposition(x=None, y=None)`15551556Устанавливает или запрашивает подсказку оконному менеджеру о том, где должен располагаться значок окна. Пустые строки отменяют имеющуюся подсказку. Без аргументов возвращает кортеж из двух текущих значений или пустую строку, если подсказка не задана. [`wm_iconposition()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_iconposition) – псевдоним `iconposition()`.15571558#### `iconwindow(pathName=None)`15591560Устанавливает или запрашивает окно, используемое в качестве значка окна. Когда окно свёрнуто, *pathName* отображается как его значок и снова скрывается при восстановлении. Пустая строка отменяет привязку. Без аргументов возвращает путь текущего окна-значка или пустую строку. Не все оконные менеджеры поддерживают окна-значки, и эта концепция бессмысленна на платформах, отличных от X11. [`wm_iconwindow()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_iconwindow) – псевдоним `iconwindow()`.15611562#### `manage(widget)`15631564Делает *widget* самостоятельным окном верхнего уровня, оформленным оконным менеджером с заголовком и т.д. Могут использоваться только виджеты [`Frame`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Frame), [`LabelFrame`](https://python-all.ru/3.16/library/tkinter.html#tkinter.LabelFrame) и [`Toplevel`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Toplevel) (версии из [`tkinter.ttk`](https://python-all.ru/3.16/library/tkinter.ttk.html#module-tkinter.ttk) **не** принимаются); передача любого другого типа виджета вызывает ошибку. [`wm_manage()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_manage) – псевдоним `manage()`.15651566Добавлено в версии 3.3.15671568#### `maxsize(width=None, height=None)`15691570Устанавливает или запрашивает максимально допустимые размеры окна в пикселях (или в единицах сетки для окна с сеткой). Оконный менеджер ограничивает окно размерами не больше *width* и *height*. Без аргументов возвращает кортеж текущих максимальной ширины и высоты. Максимальный размер по умолчанию равен размеру экрана. [`wm_maxsize()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_maxsize) – псевдоним `maxsize()`.15711572#### `minsize(width=None, height=None)`15731574Устанавливает или запрашивает минимально допустимые размеры окна в пикселях (или в единицах сетки для окна с сеткой). Оконный менеджер ограничивает окно размерами не меньше *width* и *height*. Без аргументов возвращает кортеж текущих минимальной ширины и высоты. Минимальный размер по умолчанию – один пиксель по каждому измерению. [`wm_minsize()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_minsize) – псевдоним `minsize()`.15751576#### `overrideredirect(boolean=None)`15771578Устанавливает или запрашивает флаг override-redirect для окна. Когда этот флаг установлен, оконный менеджер игнорирует окно: оно не помещается в декоративную рамку, и пользователь не может управлять им через обычные элементы управления оконного менеджера. Без аргументов возвращает булево значение, указывающее, установлен ли флаг. Флаг надёжно соблюдается только при первом отображении окна или при повторном отображении из состояния withdrawn. [`wm_overrideredirect()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_overrideredirect) – псевдоним `overrideredirect()`.15791580#### `positionfrom(who=None)`15811582Устанавливает или запрашивает источник текущего положения окна. *who* может быть `'program'` или `'user'`, указывает, было ли положение запрошено программой или пользователем; пустая строка отменяет текущий источник. Без аргументов возвращает текущий источник или пустую строку, если источник не установлен. Tk автоматически устанавливает источник в `'user'` при вызове [`geometry()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.geometry), если только явно не установлен `'program'`. [`wm_positionfrom()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_positionfrom) – псевдоним `positionfrom()`.15831584#### `protocol(name=None, func=None)`15851586Регистрирует *func* в качестве обработчика протокола оконного менеджера *name*, атома, такого как `'WM_DELETE_WINDOW'`, `'WM_SAVE_YOURSELF'` или `'WM_TAKE_FOCUS'`; после этого *func* вызывается при каждом получении сообщения этого протокола от оконного менеджера. Tk устанавливает обработчик по умолчанию для `WM_DELETE_WINDOW`, который уничтожает окно; этот метод может его заменить. Если *func* – пустая строка, обработчик удаляется. Только с *name* возвращает имя зарегистрированной команды-обработчика или пустую строку, если обработчик не установлен (обработчик по умолчанию для `WM_DELETE_WINDOW` не сообщается); без аргументов возвращает кортеж протоколов, для которых в данный момент есть обработчики. [`wm_protocol()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_protocol) – псевдоним `protocol()`.15871588#### `resizable(width=None, height=None)`15891590Управляет возможностью интерактивного изменения размера окна пользователем. *width* и *height* – булевы значения, определяющие, можно ли изменять ширину и высоту окна. Без аргументов возвращает кортеж из двух значений `0`/`1`, указывающих, можно ли изменять каждый размер в данный момент. По умолчанию размер окна можно изменять по обоим измерениям. [`wm_resizable()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_resizable) – псевдоним `resizable()`.15911592#### `sizefrom(who=None)`15931594Устанавливает или запрашивает источник текущего размера окна. *who* может быть `'program'` или `'user'`, указывает, был ли размер запрошен программой или пользователем; пустая строка отменяет текущий источник. Без аргументов возвращает текущий источник или пустую строку, если источник не установлен. [`wm_sizefrom()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_sizefrom) – псевдоним `sizefrom()`.15951596#### `stackorder(relation=None, window=None)`15971598Запрашивает порядок наложения окон верхнего уровня. Без аргументов возвращает список отображаемых виджетов верхнего уровня в порядке наложения от нижнего к верхнему, рекурсивно включая дочерние окна верхнего уровня этого окна. Если *relation* равно `'isabove'` или `'isbelow'` и *window* – другое окно верхнего уровня, возвращает `True`, если это окно находится соответственно выше или ниже *window* в порядке наложения, и `False` в противном случае. [`wm_stackorder()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_stackorder) является псевдонимом `stackorder()`.15991600Добавлено в версии 3.16.0a0 (не выпущено).16011602#### `state(newstate=None)`16031604Устанавливает или запрашивает состояние окна. Без аргументов возвращает текущее состояние: одно из `'normal'`, `'iconic'`, `'withdrawn'`, `'icon'` или, только в Windows и macOS, `'zoomed'`. `'iconic'` относится к свёрнутому окну, тогда как `'icon'` – к окну, служащему значком для другого окна (см. [`iconwindow()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.iconwindow)); состояние `'icon'` не может быть установлено. [`wm_state()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_state) – псевдоним `state()`.16051606Не путать с [`ttk.Widget.state`](https://python-all.ru/3.16/library/tkinter.ttk.html#tkinter.ttk.Widget.state).16071608#### `title(string=None)`16091610Устанавливает или запрашивает заголовок окна, который оконный менеджер должен отображать в строке заголовка. Без аргументов возвращает текущий заголовок. По умолчанию заголовок равен имени окна. [`wm_title()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_title) – псевдоним `title()`.16111612#### `transient(master=None)`16131614Помечает окно как временное (например, выпадающее меню или диалог), работающее от имени *master*, пути к другому окну верхнего уровня. Пустая строка снимает статус временного окна. Без аргументов возвращает путь текущего владельца или пустую строку. Временное окно отражает изменения состояния своего владельца и может оформляться оконным менеджером иначе; ошибка – сделать окно временным для самого себя. [`wm_transient()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_transient) – псевдоним `transient()`.16151616#### `withdraw()`16171618Убирает окно с экрана, скрывая его и заставляя оконный менеджер забыть о нём. Если окно никогда не отображалось, оно отображается в состоянии withdrawn. Иногда необходимо скрыть окно и снова отобразить его (например, с помощью [`deiconify()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.deiconify)), чтобы некоторые оконные менеджеры заметили изменения атрибутов окна. [`wm_withdraw()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.wm_withdraw) – псевдоним `withdraw()`.16191620#### `class tkinter.Pack`16211622Менеджер геометрии, который размещает виджеты, прижимая их к сторонам контейнера. Миксин `Pack` наследуется всеми виджетами (через [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget)) и предоставляет методы для управления виджетом с помощью менеджера геометрии *pack*. См. также [паковщик](https://python-all.ru/3.16/library/tkinter.html#pack-the-packer).16231624> **Примечание**1625>1626> `Pack`, [`Place`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Place) и [`Grid`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Grid) определяют короткие имена методов `forget()`, `info()`, `slaves()`, `content()` и `propagate()`. Для виджета эти простые имена разрешаются в версии менеджера *pack*, поскольку `Pack` и [`Misc`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc) предшествуют `Place` и `Grid` в порядке разрешения методов, независимо от того, какой менеджер фактически управляет виджетом; а `configure()`/`config()` настраивают параметры виджета, а не его геометрию. Используйте явные методы `pack_*`, `grid_*` и `place_*` (и `pack`, `grid`, `place` для настройки геометрии), чтобы воздействовать на конкретный менеджер геометрии.16271628#### `pack_configure(cnf={}, **kw)`16291630#### `pack(cnf={}, **kw)`16311632Упаковывает виджет внутри его контейнера, позиционируя его относительно уже упакованных там соседних виджетов. Поддерживаемые параметры:16331634***side***16351636К какой стороне контейнера прижимать виджет: `'top'` (по умолчанию), `'bottom'`, `'left'` или `'right'`.16371638***fill***16391640Следует ли растягивать виджет, чтобы заполнить его участок: `'none'` (по умолчанию), `'x'`, `'y'` или `'both'`.16411642***expand***16431644Следует ли виджету расширяться, чтобы занять лишнее пространство в его контейнере (логическое значение, по умолчанию false).16451646***anchor***16471648Где позиционировать виджет в его участке, когда участок больше виджета: привязка, например `'n'` или `'sw'` (по умолчанию `'center'`).16491650***ipadx*, *ipady***16511652Внутренний отступ, добавляемый слева и справа (*ipadx*) или сверху и снизу (*ipady*) от виджета, задаётся в экранных единицах (по умолчанию `0`).16531654***padx*, *pady***16551656Внешний отступ, оставляемый слева и справа (*padx*) или сверху и снизу (*pady*) от виджета, задаётся в экранных единицах или как пара значений для каждой из двух сторон (по умолчанию `0`).16571658***after***16591660Упаковывает виджет после указанного виджета в порядке упаковки, используя тот же контейнер.16611662***before***16631664Упаковывает виджет перед указанным виджетом в порядке упаковки, используя тот же контейнер.16651666***in\_***16671668Контейнер, в который упаковывать виджет; по умолчанию – родительский виджет.16691670`pack()`, [`configure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Pack.configure) и [`config()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Pack.config) являются псевдонимами `pack_configure()`.16711672#### `pack_forget()`16731674Убирает виджет и удаляет его из порядка упаковки, забывая его параметры упаковки. Позже его можно снова упаковать с помощью [`pack_configure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Pack.pack_configure). [`forget()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Pack.forget) является псевдонимом `pack_forget()`, за исключением [`PanedWindow`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PanedWindow), [`ttk.Notebook`](https://python-all.ru/3.16/library/tkinter.ttk.html#tkinter.ttk.Notebook) и [`ttk.PanedWindow`](https://python-all.ru/3.16/library/tkinter.ttk.html#tkinter.ttk.PanedWindow), которые предоставляют собственный метод `forget()`.16751676Не путать с [`Wm.forget()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.forget).16771678#### `pack_info()`16791680Возвращает словарь текущих параметров упаковки виджета. [`info()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Pack.info) является псевдонимом `pack_info()`.16811682#### `pack_propagate()`16831684#### `pack_propagate(flag)`16851686То же, что и [`Misc.pack_propagate()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.pack_propagate), рассматривая этот виджет как контейнер: включить или отключить распространение геометрии. [`propagate()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Pack.propagate) является псевдонимом `pack_propagate()`.16871688#### `pack_slaves()`16891690То же, что и [`Misc.pack_slaves()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.pack_slaves): возвращает список виджетов, упакованных в этот виджет. [`slaves()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Pack.slaves) – псевдоним `pack_slaves()`.16911692#### `pack_content()`16931694То же, что и [`Misc.pack_content()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.pack_content). [`content()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Pack.content) – псевдоним `pack_content()`.16951696Добавлено в версии 3.15.16971698#### `class tkinter.Place`16991700Менеджер геометрии, размещающий виджеты в явных позициях и размерах внутри их контейнера. Примесь `Place` наследуется всеми виджетами (через [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget)).17011702#### `place_configure(cnf={}, **kw)`17031704#### `place(cnf={}, **kw)`17051706Размещает виджет внутри его контейнера в абсолютной или относительной позиции. Поддерживаемые опции:17071708***x*, *y***17091710Абсолютные горизонтальная и вертикальная позиции опорной точки виджета как экранное расстояние (по умолчанию `0`).17111712***relx*, *rely***17131714Горизонтальная и вертикальная позиции опорной точки виджета как доля ширины и высоты контейнера, где `0.0` – это левый или верхний край, а `1.0` – правый или нижний край. Если указаны как абсолютная, так и относительная опции, их значения суммируются.17151716***anchor***17171718Какая точка виджета размещается в заданной позиции: опорная точка, например `'n'` или `'se'` (по умолчанию `'nw'`).17191720***width*, *height***17211722Абсолютные ширина и высота виджета как экранное расстояние. По умолчанию используется запрошенный размер виджета.17231724***relwidth*, *relheight***17251726Ширина и высота виджета как доля ширины и высоты контейнера. Если указаны как абсолютная, так и относительная опции, их значения суммируются.17271728***bordermode***17291730Как граница контейнера влияет на размещение: `'inside'` (по умолчанию) измеряет область внутри границы, `'outside'` измеряет область, включая границу, а `'ignore'` использует официальную область X.17311732***in\_***17331734Контейнер, относительно которого размещается виджет; он должен быть родителем виджета или потомком родителя, по умолчанию – родитель.17351736`place()`, [`configure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Place.configure) и [`config()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Place.config) являются псевдонимами `place_configure()`.17371738#### `place_forget()`17391740Скрыть виджет и удалить его из размещения, забыв его опции размещения.17411742#### `place_info()`17431744Возвращает словарь текущих опций размещения виджета.17451746#### `place_slaves()`17471748То же, что и [`Misc.place_slaves()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.place_slaves): возвращает список виджетов, размещённых в этом виджете.17491750#### `place_content()`17511752То же, что и [`Misc.place_content()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.place_content).17531754Добавлено в версии 3.15.17551756#### `class tkinter.Grid`17571758Менеджер геометрии, располагающий виджеты в двумерной сетке строк и столбцов внутри их контейнера. Примесь `Grid` наследуется всеми виджетами (через [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget)).17591760#### `grid_configure(cnf={}, **kw)`17611762#### `grid(cnf={}, **kw)`17631764Помещает виджет в ячейку сетки его контейнера.17651766Не путать с [`Wm.grid()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm.grid).17671768Поддерживаемые параметры:17691770***строка*, *столбец***17711772Строка и столбец ячейки, в которую помещается виджет, с отсчётом от `0`. *Столбец* по умолчанию равен столбцу, следующему за последним виджетом, помещённым в том же вызове `grid_configure()` (или `0`), а *строка* по умолчанию равна следующей пустой строке.17731774***rowspan*, *columnspan***17751776Количество строк и столбцов, которое должен охватывать виджет (по умолчанию `1`).17771778***sticky***17791780Определяет расположение или растяжение виджета, когда его ячейка больше самого виджета: строка, содержащая ноль или более символов из `'n'`, `'s'`, `'e'` и `'w'`, указывающих стороны ячейки, к которым прикрепляется виджет. Указание одновременно `'n'` и `'s'` (или `'e'` и `'w'`) растягивает виджет на всю высоту (или ширину) ячейки. По умолчанию `''` – виджет центрируется в ячейке с сохранением запрошенного размера.17811782***ipadx*, *ipady***17831784Внутренний отступ, добавляемый слева и справа (*ipadx*) или сверху и снизу (*ipady*) от виджета, задаётся в экранных единицах (по умолчанию `0`).17851786***padx*, *pady***17871788Внешний отступ, оставляемый слева и справа (*padx*) или сверху и снизу (*pady*) от виджета, задаётся в экранных единицах или как пара значений для каждой из двух сторон (по умолчанию `0`).17891790***in\_***17911792Контейнер, в сетку которого помещается виджет; по умолчанию – родительский виджет.17931794`grid()`, [`configure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Grid.configure) и [`config()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Grid.config) являются псевдонимами `grid_configure()`.17951796#### `grid_forget()`17971798Скрывает виджет и удаляет его из сетки, забывая его параметры сетки.17991800#### `grid_remove()`18011802Скрывает виджет и удаляет его из сетки, но запоминает его параметры сетки, чтобы при повторном размещении он был восстановлен в той же ячейке.18031804#### `grid_info()`18051806Возвращает словарь текущих параметров сетки виджета.18071808#### `grid_bbox(column=None, row=None, col2=None, row2=None)`18091810То же, что и [`Misc.grid_bbox()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grid_bbox). [`bbox()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Grid.bbox) – псевдоним `grid_bbox()`, за исключением [`Canvas`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas), [`Listbox`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox), [`Spinbox`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox), [`Text`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text), [`ttk.Entry`](https://python-all.ru/3.16/library/tkinter.ttk.html#tkinter.ttk.Entry) и [`ttk.Treeview`](https://python-all.ru/3.16/library/tkinter.ttk.html#tkinter.ttk.Treeview), которые предоставляют собственный метод `bbox()`.18111812#### `grid_columnconfigure(index, cnf={}, **kw)`18131814То же, что [`Misc.grid_columnconfigure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grid_columnconfigure): запрашивает или задаёт параметры столбца сетки (такие как *weight*, *minsize*, *pad* и *uniform*). [`columnconfigure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Grid.columnconfigure) – псевдоним `grid_columnconfigure()`.18151816#### `grid_rowconfigure(index, cnf={}, **kw)`18171818То же, что [`Misc.grid_rowconfigure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grid_rowconfigure): запрашивает или задаёт параметры строки сетки. [`rowconfigure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Grid.rowconfigure) – псевдоним `grid_rowconfigure()`.18191820#### `grid_location(x, y)`18211822То же, что [`Misc.grid_location()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grid_location): возвращает `(column, row)` ячейки, которая содержит пиксель с координатами *x*, *y*. [`location()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Grid.location) – псевдоним `grid_location()`.18231824#### `grid_size()`18251826То же, что и [`Misc.grid_size()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grid_size): возвращает кортеж `(columns, rows)`, содержащий размер сетки. [`size()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Grid.size) – это псевдоним `grid_size()`, за исключением [`Listbox`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox) и [`ttk.Treeview`](https://python-all.ru/3.16/library/tkinter.ttk.html#tkinter.ttk.Treeview), которые предоставляют собственный метод `size()`.18271828#### `grid_propagate()`18291830#### `grid_propagate(flag)`18311832То же, что и [`Misc.grid_propagate()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grid_propagate).18331834#### `grid_slaves(row=None, column=None)`18351836То же, что и [`Misc.grid_slaves()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grid_slaves): возвращает виджеты, управляемые сеткой, с возможностью ограничения по *строке* и/или *столбцу*.18371838#### `grid_content(row=None, column=None)`18391840То же, что и [`Misc.grid_content()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grid_content).18411842Добавлено в версии 3.15.18431844#### `class tkinter.XView`18451846Примесь, предоставляющая интерфейс горизонтальной прокрутки, общий для виджетов, таких как [`Entry`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Entry), [`Canvas`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas), [`Listbox`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox), [`Text`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text) и [`Spinbox`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox). Метод [`xview()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.XView.xview) виджета регистрируется как *команда* горизонтального [`Scrollbar`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Scrollbar).18471848#### `xview(*args)`18491850Запрашивает или изменяет горизонтальное положение вида. Без аргументов возвращает кортеж `(first, last)` из двух дробей от 0 до 1, указывающих долю документа, которая в данный момент видна. В противном случае аргументы передаются команде виджета Tk `xview` и обычно генерируются полосой прокрутки; [`xview_moveto()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.XView.xview_moveto) и [`xview_scroll()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.XView.xview_scroll) предоставляют более удобный интерфейс.18511852#### `xview_moveto(fraction)`18531854Настраивает вид так, чтобы *fraction* от общей ширины документа находилось слева за экраном. *fraction* – число от 0 до 1.18551856#### `xview_scroll(number, what)`18571858Сдвигает вид влево или вправо на *число* единиц. *what* может быть `'units'` или `'pages'`; отрицательное *число* прокручивает влево, положительное – вправо.18591860#### `class tkinter.YView`18611862Примесь, предоставляющая интерфейс вертикальной прокрутки, общий для виджетов, таких как [`Canvas`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas), [`Listbox`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox) и [`Text`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text). Метод [`yview()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.YView.yview) виджета регистрируется как *команда* вертикального [`Scrollbar`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Scrollbar).18631864#### `yview(*args)`18651866Запрашивает или изменяет вертикальное положение вида. Без аргументов возвращает кортеж `(first, last)` из двух дробей от 0 до 1, указывающих долю документа, которая в данный момент видна. В противном случае аргументы передаются команде виджета Tk `yview`, обычно генерируемой полосой прокрутки; [`yview_moveto()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.YView.yview_moveto) и [`yview_scroll()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.YView.yview_scroll) предоставляют более удобный интерфейс.18671868#### `yview_moveto(fraction)`18691870Настраивает вид так, чтобы *fraction* от общей высоты документа находилось над верхней границей экрана. *fraction* – число от 0 до 1.18711872#### `yview_scroll(number, what)`18731874Сдвигает вид вверх или вниз на *число* единиц. *what* может быть `'units'` или `'pages'`; отрицательное *число* прокручивает вверх, положительное – вниз.18751876#### `class tkinter.BaseWidget(master, widgetName, cnf={}, kw={}, extra=())`18771878Внутренний базовый класс для всех виджетов. Наследует от [`Misc`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc) и добавляет механизм, который создаёт нижележащий Tk-виджет; прикладной код обычно использует [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget) или конкретный класс виджета, а не создаёт экземпляр `BaseWidget` напрямую.18791880#### `destroy()`18811882Уничтожает этот виджет и все его дочерние элементы, удаляя соответствующие Tk-виджеты и связанные команды Tcl.18831884#### `class tkinter.Widget(master, widgetName, cnf={}, kw={}, extra=())`18851886Внутренний базовый класс для стандартных виджетов. Объединяет [`BaseWidget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.BaseWidget) с примесями менеджеров геометрии [`Pack`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Pack), [`Place`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Place) и [`Grid`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Grid), так что любой виджет может управляться любым из трёх менеджеров геометрии. Конкретные классы виджетов ([`Button`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Button), [`Label`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Label) и так далее) наследуют от `Widget`.18871888### Виджеты верхнего уровня18891890#### `class tkinter.Tk(screenName=None, baseName=None, className='Tk', useTk=True, sync=False, use=None)`18911892Создаёт виджет верхнего уровня Tk, который обычно является главным окном приложения, и инициализирует для него интерпретатор Tcl. Каждый экземпляр имеет свой собственный связанный интерпретатор Tcl. Наследует от [`Misc`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc) и [`Wm`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm).18931894Чтобы создать интерпретатор Tcl без инициализации подсистемы Tk, используйте фабричную функцию [`Tcl()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Tcl).18951896Класс `Tk` обычно создаётся со значениями по умолчанию. Однако в настоящее время распознаются следующие именованные аргументы:18971898***screenName***18991900При указании (в виде строки) устанавливает переменную окружения `DISPLAY`. (только X11)19011902***baseName***19031904Имя файла профиля. По умолчанию *baseName* берётся из имени программы (`sys.argv[0]`).19051906***className***19071908Имя класса виджета. Используется как файл профиля, а также как имя, с которым вызывается Tcl (*argv0* в *interp*).19091910***useTk***19111912Если `True`, инициализировать подсистему Tk. Функция [`tkinter.Tcl()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Tcl) устанавливает это в `False`.19131914***sync***19151916Если `True`, выполнять все команды X-сервера синхронно, чтобы ошибки сообщались немедленно. Может использоваться для отладки. (только X11)19171918***use***19191920Задаёт *id* окна, в которое встраивается приложение, вместо того чтобы создавать его как независимое окно верхнего уровня. *id* должен быть указан так же, как значение опции -use для виджетов верхнего уровня (то есть иметь форму, подобную возвращаемой [`winfo_id()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.winfo_id)).19211922Обратите внимание, что на некоторых платформах это будет работать корректно только если *id* ссылается на Tk-фрейм или окно верхнего уровня, у которых включена опция -container.19231924`Tk` читает и интерпретирует файлы профилей с именами `.className.tcl` и `.baseName.tcl` в интерпретатор Tcl и вызывает [`exec()`](https://python-all.ru/3.16/library/functions.html#exec) для содержимого `.className.py` и `.baseName.py`. Путь к файлам профилей задаётся переменной окружения `HOME` или, если она не определена, то [`os.curdir`](https://python-all.ru/3.16/library/os.html#os.curdir).19251926> **Примечание**1927>1928> В Windows создание интерпретатора Tcl (путём создания экземпляра `Tk` или вызова [`Tcl()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Tcl)) устанавливает переменную окружения `HOME` для процесса, если она ещё не установлена, в `%HOMEDRIVE%%HOMEPATH%` (или `USERPROFILE`, или `c:\`). Это делается Tcl и может повлиять на другой код, который читает `HOME`.19291930#### `tk`19311932Объект приложения Tk, созданный созданием экземпляра `Tk`. Он предоставляет доступ к интерпретатору Tcl. Каждый виджет, прикреплённый к тому же экземпляру `Tk`, имеет одинаковое значение для своего атрибута [`tk`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Tk.tk).19331934#### `master`19351936Объект виджета, содержащий данный виджет. Для `Tk` `master` является [`None`](https://python-all.ru/3.16/library/constants.html#None), потому что это главное окно. Термины *master* и *parent* похожи и иногда используются как взаимозаменяемые имена аргументов; однако вызов [`winfo_parent()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.winfo_parent) возвращает строку с именем виджета, тогда как `master` возвращает объект. *parent*/*child* отражает древовидную связь, а *master* (или *container*)/*content* отражает структуру контейнера.19371938#### `children`19391940Непосредственные потомки этого виджета в виде [`dict`](https://python-all.ru/3.16/library/stdtypes.html#dict) с именами дочерних виджетов в качестве ключей и объектами экземпляров потомков в качестве значений.19411942#### `destroy()`19431944Уничтожить этот виджет и все дочерние виджеты, а для главного окна – завершить соединение с нижележащим интерпретатором Tcl.19451946#### `loadtk()`19471948Завершить загрузку и инициализацию подсистемы Tk. Это необходимо только в том случае, если интерпретатор был создан без Tk (например, через [`Tcl()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Tcl)); он вызывается автоматически, когда *useTk* равно true.19491950#### `readprofile(baseName, className)`19511952Прочитать и выполнить (source) пользовательские файлы профилей `.className.tcl` и `.baseName.tcl` в интерпретатор Tcl, и выполнить соответствующие файлы `.className.py` и `.baseName.py`. Это вызывается во время инициализации; см. описание конструктора выше.19531954#### `report_callback_exception(exc, val, tb)`19551956Сообщить об исключении в колбэке. Вызывается, когда исключение распространяется из колбэка Tkinter; *exc*, *val* и *tb* – это тип исключения, значение и трассировка, возвращаемые [`sys.exc_info()`](https://python-all.ru/3.16/library/sys.html#sys.exc_info). Реализация по умолчанию выводит трассировку в [`sys.stderr`](https://python-all.ru/3.16/library/sys.html#sys.stderr). Может быть переопределена для настройки обработки ошибок, например для отображения трассировки в диалоговом окне.19571958#### `class tkinter.Toplevel(master=None, cnf={}, **kw)`19591960Виджет `Toplevel` – это окно верхнего уровня, похожее на [`Frame`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Frame), за исключением того, что его X-родителем является корневое окно экрана, а не его логический родитель. Его основное назначение – служить контейнером для диалоговых окон и других наборов виджетов; его видимые особенности – это только фон и необязательная 3D-рамка. Из заметных опций: *menu*, которая устанавливает [`Menu`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Menu) в качестве строки меню окна. Наследуется от [`BaseWidget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.BaseWidget) и [`Wm`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Wm), поэтому окно верхнего уровня управляется оконным менеджером. Полный список опций см. в руководстве по Tk `toplevel`.19611962### Классы виджетов19631964#### `class tkinter.Button(master=None, cnf={}, **kw)`19651966Виджет `Button` отображает текстовую строку, растровое изображение или картинку и вызывает команду при нажатии (по клику кнопкой мыши 1 на кнопке или, когда кнопка в фокусе, по нажатию пробела). Наследует от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget). В дополнение к стандартным опциям виджета, кнопка принимает опции, описанные на странице руководства Tk `button`, такие как *command* (колбэк, вызываемый при нажатии кнопки), *textvariable*, *state* и *default*.19671968#### `invoke()`19691970Вызывает команду, связанную с кнопкой, если она есть, и возвращает её результат, или пустую строку, если команда не задана. Игнорируется, если состояние кнопки `disabled`.19711972#### `flash()`19731974Мигает кнопкой, перерисовывая её несколько раз, чередуя активный и нормальный цвета. После мигания кнопка остаётся в том же нормальном или активном состоянии, что и при вызове метода. Игнорируется, если состояние кнопки `disabled`.19751976#### `class tkinter.Canvas(master=None, cnf={}, **kw)`19771978Виджет `Canvas` реализует структурированную графику. Он отображает любое количество *элементов*, таких как дуги, линии, овалы, многоугольники, прямоугольники, текст, растровые изображения, картинки и встроенные окна, которые можно рисовать, перемещать, менять их цвет и привязывать к событиям. Наследует от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget), [`XView`](https://python-all.ru/3.16/library/tkinter.html#tkinter.XView) и [`YView`](https://python-all.ru/3.16/library/tkinter.html#tkinter.YView), поэтому представление можно прокручивать по горизонтали и вертикали с помощью [`xview()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.XView.xview) и [`yview()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.YView.yview). Обратитесь к странице руководства Tk `canvas` для полного списка опций виджета и элементов.19791980Каждый элемент имеет уникальный целочисленный *id*, присваиваемый при создании, и ноль или более строковых *тегов*. Тег – это произвольная строка, которая не должна иметь вид целого числа; один и тот же тег могут разделять несколько элементов, что делает теги удобными для группировки элементов. Специальный тег `'all'` соответствует каждому элементу на холсте, а `'current'` – верхнему элементу под указателем мыши. Большинство методов принимают аргумент *tagOrId*, который может быть целочисленным id, именующим один элемент, или тегом, именующим ноль или более элементов; как описано на странице руководства Tk `canvas`, тег также может быть логическим выражением из тегов, объединённых операторами `&&`, `||`, `^`, `!` и скобками. Когда метод, работающий с одним элементом, получает *tagOrId*, соответствующий нескольким элементам, он обычно использует самый нижний подходящий элемент в списке отображения.19811982Элементы хранятся в *списке отображения*, который определяет порядок рисования: элементы, расположенные позже в списке, рисуются поверх более ранних. Новый элемент помещается в начало списка; порядок можно изменить с помощью [`tag_raise()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.tag_raise) и [`tag_lower()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.tag_lower).19831984#### `create_arc(*args, **kw)`19851986#### `create_bitmap(*args, **kw)`19871988#### `create_image(*args, **kw)`19891990#### `create_line(*args, **kw)`19911992#### `create_oval(*args, **kw)`19931994#### `create_polygon(*args, **kw)`19951996#### `create_rectangle(*args, **kw)`19971998#### `create_text(*args, **kw)`19992000#### `create_window(*args, **kw)`20012002Создаёт новый элемент соответствующего типа и возвращает его целочисленный id. Каждый метод вызывается как `create_TYPE(coord..., **options)`: первые позиционные аргументы задают координаты, определяющие элемент (отдельные числа, единая последовательность чисел или пары координат), а ключевые аргументы устанавливают специфичные для элемента опции. Координаты и расстояния на экране могут быть заданы числами (интерпретируются как пиксели) или строками с суффиксом единицы измерения (`'m'`, `'c'`, `'i'` или `'p'` для миллиметров, сантиметров, дюймов или типографских пунктов), но всегда хранятся и возвращаются в пикселях.20032004Типы элементов: `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*).20052006Большинство типов элементов принимают общий набор *стандартных опций элементов*, а также несколько опций, специфичных для каждого типа. Имена опций передаются как ключевые аргументы, без ведущего дефиса.20072008Стандартные опции элементов:20092010***fill***20112012Цвет, используемый для заливки внутренней части элемента, или для рисования элемента *line* или символов элемента *text*. Пустая строка (значение по умолчанию для всех типов, кроме *line* и *text*) оставляет элемент незаполненным.20132014***outline***20152016Цвет, используемый для рисования контура элемента. Пустая строка означает отсутствие контура.20172018***width***20192020Ширина контура, по умолчанию `1.0`. Не действует, если *outline* пусто.20212022***dash***20232024Штриховой узор для контура, задаваемый либо как последовательность длин сегментов в пикселях, либо как строка из символов `'.'`, `','`, `'-'`, `'_'` и пробела. Пустой узор (по умолчанию) рисует сплошной контур.20252026***dashoffset***20272028Начальное смещение в пикселях в узоре *dash*. Игнорируется, если узор *dash* отсутствует.20292030***stipple***20312032Битовая карта, используемая как трафаретный узор при заливке элемента. Полноценно поддерживается только на X11.20332034***outlinestipple***20352036Битовая карта, используемая как трафаретный узор при рисовании контура. Не действует, если *outline* пуст.20372038***offset*, *outlineoffset***20392040Смещение узоров заливки и контура, задаваемое как `'x,y'` или как сторона, например `'n'`, `'se'` или `'center'`. Смещения трафарета поддерживаются только на X11.20412042***state***20432044Переопределяет состояние холста для этого элемента; одно из `'normal'`, `'disabled'` или `'hidden'`.20452046***tags***20472048Один тег или последовательность тегов для привязки к элементу, заменяя все существующие теги.20492050У многих из этих опций есть варианты *active…* и *disabled…* (например, *activefill*, *disabledfill*, *activewidth*, *disableddash*, *activeoutline*, *disabledstipple*), которые переопределяют основную опцию, когда элемент является активным (под указателем мыши) или находится в отключённом состоянии.20512052Следующие типы элементов поддерживают дополнительные опции.20532054Для элементов `arc`:20552056***start***20572058Начало углового диапазона дуги, в градусах, измеряемое против часовой стрелки от положения «3 часа».20592060***extent***20612062Размер углового диапазона, в градусах против часовой стрелки от *start*.20632064***стиль***20652066Как рисуется дуга: `'pieslice'` (по умолчанию), `'chord'` или `'arc'`.20672068Для элементов `line`:20692070***arrow***20712072Где рисовать наконечники стрелок: `'none'` (по умолчанию), `'first'`, `'last'` или `'both'`.20732074***arrowshape***20752076Последовательность из трёх расстояний, описывающих форму наконечников стрелок.20772078***capstyle***20792080Как рисуются концы линий: `'butt'` (по умолчанию), `'projecting'` или `'round'`.20812082***joinstyle***20832084Как рисуются вершины линий: `'round'` (по умолчанию), `'bevel'` или `'miter'`.20852086***smooth***20872088Метод сглаживания: ложное значение (по умолчанию) без сглаживания, или `'true'`/`'bezier'` или `'raw'` для рисования линии в виде кривой.20892090***splinesteps***20912092Количество отрезков, аппроксимирующих каждый сплайн, когда *smooth* включён.20932094Для элементов `polygon`:20952096***joinstyle*, *smooth*, *splinesteps***20972098Как и для элементов `line`, применяется к контуру многоугольника.20992100Для элементов `text`:21012102***text***21032104Отображаемая строка; символы новой строки начинают новые строки.21052106***font***21072108Шрифт, используемый для текста.21092110***выравнивание***21112112Способ выравнивания строк: `'left'` (по умолчанию), `'right'` или `'center'`.21132114***anchor***21152116Как текст позиционируется относительно своей точки; по умолчанию `'center'`.21172118***width***21192120Максимальная длина строки; если не равна нулю, строки переносятся по пробелам.21212122***angle***21232124На сколько градусов поворачивать текст против часовой стрелки относительно точки позиционирования, от `0.0` до `360.0` (по умолчанию `0.0`).21252126***underline***21272128Индекс символа для подчёркивания или `-1`, если подчёркивание не требуется.21292130Для элементов `bitmap`:21312132***bitmap***21332134Отображаемое растровое изображение.21352136***anchor***21372138Как растровое изображение позиционируется относительно своей точки.21392140***background*, *foreground***21412142Цвета для пикселей `0` и `1` растрового изображения; пустой *background* делает пиксели `0` прозрачными. Для обоих есть варианты *active…* и *disabled…*, а для *bitmap* – варианты *activebitmap* и *disabledbitmap*.21432144Для элементов `image`:21452146***image***21472148Изображение Tk для отображения, предварительно созданное с помощью протоколов изображений.21492150***anchor***21512152Как изображение позиционируется относительно своей точки.21532154Для обоих параметров существуют варианты *active…* и *disabled…* (*activeimage*, *disabledimage*), используемые в активном и отключённом состояниях.21552156Для элементов `window`:21572158***window***21592160Встраиваемый виджет; он должен быть дочерним элементом холста или одного из его предков и не может быть окном верхнего уровня.21612162***anchor***21632164Как окно позиционируется относительно своей точки.21652166***width*, *height***21672168Размер, назначаемый окну; если ноль (по умолчанию), окну присваивается его запрошенный размер.21692170Элементы `oval` и `rectangle` не имеют опций, специфичных для типа; они используют только стандартные опции элементов.21712172> **Примечание**2173>2174> Tk 8.6 добавил опцию *angle*, а Tk 9.0 добавил опцию *underline* для элементов `text`.21752176#### `coords(tagOrId)`21772178#### `coords(tagOrId, coordList, /)`21792180#### `coords(tagOrId, /, *coordList)`21812182Запрос или изменение координат элемента. С одним только *tagOrId* возвращает список координат с плавающей запятой элемента, заданного *tagOrId* (первый подходящий, если соответствует нескольким). При указании новых координат заменяет координаты этого элемента на указанные; как и методы `create_*`, координаты могут быть заданы отдельными числами, одной последовательностью или парами координат. Возвращаемые координаты всегда в пикселях, независимо от единиц, использованных при задании; для прямоугольников, овалов и дуг они упорядочены как лево, верх, право, низ.21832184Изменено в версии 3.12: Аргументы теперь уплощаются: координаты могут быть заданы отдельными аргументами, одной последовательностью или сгруппированы парами, как в методах `create_*`.21852186#### `move(tagOrId, xAmount, yAmount, /)`21872188Перемещает каждый из элементов, заданных *tagOrId*, в координатном пространстве холста, добавляя *xAmount* к каждой координате x и *yAmount* к каждой координате y элемента.21892190#### `moveto(tagOrId, x='', y='')`21912192Перемещает элементы, заданные *tagOrId*, так, чтобы первая пара координат (левый верхний угол ограничивающей рамки) наименьшего подходящего элемента находилась в позиции (*x*, *y*). *x* или *y* могут быть пустой строкой, в этом случае соответствующая координата не изменяется. Все подходящие элементы сохраняют свои позиции относительно друг друга.21932194Добавлено в версии 3.8.21952196#### `scale(tagOrId, xOrigin, yOrigin, xScale, yScale, /)`21972198Масштабирует координаты всех элементов, заданных *tagOrId*, в координатном пространстве холста. Каждая координата x корректируется так, чтобы её расстояние от *xOrigin* изменилось в *xScale* раз, а каждая координата y – чтобы её расстояние от *yOrigin* изменилось в *yScale* раз (коэффициент `1.0` оставляет координату без изменений).21992200#### `rotate(tagOrId, xOrigin, yOrigin, angle, /)`22012202Поворачивает координаты всех элементов, заданных *tagOrId*, в плоскости координат холста вокруг точки начала координат (*xOrigin*, *yOrigin*) на *angle* градусов против часовой стрелки. Отрицательные значения *angle* поворачивают по часовой стрелке.22032204Добавлено в версии 3.16.0a0 (не выпущено).22052206#### `delete(*tagOrIds)`22072208Удаляет каждый из элементов, заданных аргументами *tagOrIds*.22092210#### `dchars(tagOrId, first, /)`22112212#### `dchars(tagOrId, first, last, /)`22132214Удаляет из каждого элемента, заданного *tagOrId*, символы (для текстовых элементов) или координаты (для элементов-линий и многоугольников) в диапазоне от *first* до *last* включительно; *last* по умолчанию равен *first*. Элементы, не поддерживающие индексацию, игнорируют эту операцию.22152216#### `insert(tagOrId, beforeThis, string, /)`22172218Вставляет *string* в каждый из элементов, заданных *tagOrId*, непосредственно перед символом или координатой, индекс которой равен *beforeThis*. Для элементов-линий и многоугольников *string* должна быть допустимой последовательностью координат.22192220#### `rchars(tagOrId, first, last, string, /)`22212222Заменяет символы (для текстовых элементов) или координаты (для элементов линии и многоугольника) в диапазоне от *first* до *last* включительно для каждого из элементов, заданных *tagOrId*, на *string*. Для элементов линии и многоугольника *string* должна быть корректной последовательностью координат. Элементы, не поддерживающие индексацию, игнорируют эту операцию.22232224Добавлено в версии 3.16.0a0 (не выпущено).22252226#### `itemcget(tagOrId, option)`22272228Возвращает текущее значение опции конфигурации *option* для элемента, заданного *tagOrId* (наименьший подходящий элемент, если соответствует нескольким). Это похоже на [`cget()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.cget), но применяется к отдельному элементу.22292230#### `itemconfigure(tagOrId, cnf=None, **kw)`22312232Запрос или изменение опций конфигурации элементов, заданных *tagOrId*. Это отражает [`configure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.configure), но применяется к отдельным элементам, а не ко всему холсту. Без опций возвращает словарь, описывающий текущие опции первого подходящего элемента; в противном случае устанавливает указанные опции для каждого подходящего элемента. Допустимые опции – это те, которые принимает соответствующий метод `create_*`. [`itemconfig()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.itemconfig) является псевдонимом `itemconfigure()`.22332234#### `type(tagOrId)`22352236Возвращает тип элемента, заданного *tagOrId* (первый подходящий, если соответствует нескольким), например `'rectangle'` или `'text'`, или `None`, если *tagOrId* не соответствует ни одному элементу.22372238#### `gettags(tagOrId, /)`22392240Возвращает кортеж тегов, связанных с элементом, заданным параметром *tagOrId* (первый подходящий элемент в порядке отображения, если подходит несколько). Возвращает пустой кортеж, если ни один элемент не подходит или у элемента нет тегов.22412242#### `dtag(tagOrId, /)`22432244#### `dtag(tagOrId, tagToDelete, /)`22452246Удаляет тег *tagToDelete* (по умолчанию равный *tagOrId*) из каждого элемента, заданного параметром *tagOrId*. Элементы, у которых нет этого тега, остаются без изменений.22472248#### `addtag(newtag, searchSpec, /, *args)`22492250Добавляет тег *newtag* каждому элементу, выбранному по спецификации поиска *searchSpec* (и любым дополнительным параметрам *args*). *searchSpec* – одно из значений: `'above'`, `'all'`, `'below'`, `'closest'`, `'enclosed'`, `'overlapping'` или `'withtag'`; приведённые ниже методы `addtag_*` – это удобные обёртки, предоставляющие каждую из этих форм.22512252#### `addtag_above(newtag, tagOrId)`22532254Добавляет тег *newtag* элементу, расположенному непосредственно над (после) *tagOrId* в списке отображения.22552256#### `addtag_all(newtag)`22572258Добавляет тег *newtag* всем элементам на холсте.22592260#### `addtag_below(newtag, tagOrId)`22612262Добавляет тег *newtag* элементу, расположенному непосредственно под (перед) *tagOrId* в списке отображения.22632264#### `addtag_closest(newtag, x, y, halo=None, start=None)`22652266Добавляет тег *newtag* элементу, ближайшему к точке (*x*, *y*). Если задан *halo*, любой элемент в пределах этого расстояния от точки считается перекрывающим её. Если задан *start* (тег или id), выбирается самый верхний ближайший элемент, который находится ниже *start* в списке отображения. Это можно использовать для последовательного перебора всех ближайших элементов.22672268#### `addtag_enclosed(newtag, x1, y1, x2, y2)`22692270Добавляет тег *newtag* каждому элементу, полностью находящемуся внутри прямоугольника (*x1*, *y1*, *x2*, *y2*), где *x1* \<= *x2* и *y1* \<= *y2*.22712272#### `addtag_overlapping(newtag, x1, y1, x2, y2)`22732274Добавляет тег *newtag* каждому элементу, который перекрывает прямоугольник (*x1*, *y1*, *x2*, *y2*) или находится внутри него, где *x1* \<= *x2* и *y1* \<= *y2*.22752276#### `addtag_withtag(newtag, tagOrId)`22772278Добавляет тег *newtag* каждому элементу, заданному параметром *tagOrId*.22792280#### `find(searchSpec, /, *args)`22812282Возвращает кортеж идентификаторов всех элементов, выбранных по спецификации поиска *searchSpec* (и любым дополнительным параметрам *args*), в порядке наложения, начиная с самого нижнего элемента. Спецификация поиска может быть любой из форм, принимаемых методом [`addtag()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.addtag). Приведённые ниже методы `find_*` являются более удобными обёртками для него.22832284#### `find_above(tagOrId)`22852286Возвращает кортеж, содержащий идентификатор элемента, расположенного непосредственно над *tagOrId* в списке отображения.22872288#### `find_all()`22892290Возвращает кортеж идентификаторов всех элементов на холсте в порядке наложения.22912292#### `find_below(tagOrId)`22932294Возвращает кортеж, содержащий идентификатор элемента, расположенного непосредственно под *tagOrId* в списке отображения.22952296#### `find_closest(x, y, halo=None, start=None)`22972298Возвращает кортеж, содержащий идентификатор элемента, ближайшего к точке (*x*, *y*). Параметры *halo* и *start* интерпретируются так же, как в [`addtag_closest()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.addtag_closest).22992300#### `find_enclosed(x1, y1, x2, y2)`23012302Возвращает кортеж идентификаторов всех элементов, полностью находящихся внутри прямоугольника (*x1*, *y1*, *x2*, *y2*).23032304#### `find_overlapping(x1, y1, x2, y2)`23052306Возвращает кортеж идентификаторов всех элементов, которые перекрываются или находятся внутри прямоугольника (*x1*, *y1*, *x2*, *y2*).23072308#### `find_withtag(tagOrId)`23092310Возвращает кортеж идентификаторов всех элементов, заданных *tagOrId*.23112312#### `tag_raise(tagOrId, aboveThis=None, /)`23132314Перемещает все элементы, заданные *tagOrId*, на новую позицию в списке отображения сразу над элементом, заданным *aboveThis*, или в верхнюю часть списка отображения, если *aboveThis* опущен. При перемещении нескольких элементов их относительный порядок сохраняется. Это не влияет на встроенные оконные элементы, порядок наложения которых вместо этого управляется [`Misc.tkraise()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.tkraise) и [`Misc.lower()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.lower). [`lift()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.lift) и [`tkraise()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.tkraise) – псевдонимы `tag_raise()`.23152316#### `tag_lower(tagOrId, belowThis=None, /)`23172318Перемещает все элементы, заданные *tagOrId*, на новую позицию в списке отображения сразу под элементом, заданным *belowThis*, или в нижнюю часть списка отображения, если *belowThis* опущен. При перемещении нескольких элементов их относительный порядок сохраняется. Это не влияет на встроенные оконные элементы. [`lower()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.lower) – псевдоним `tag_lower()`.23192320> **Примечание**2321>2322> В классе `Canvas` методы [`tkraise()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.tkraise)/[`lift()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.lift) и [`lower()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.lower) изменяют порядок наложения элементов canvas, переопределяя унаследованные методы [`Misc.tkraise()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.tkraise)/[`Misc.lift()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.lift) и [`Misc.lower()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.lower), которые изменяют порядок самого виджета; поэтому эти унаследованные методы недоступны.23232324#### `tag_bind(tagOrId, sequence=None, func=None, add=None)`23252326Привязывает колбэк *func* к событию *sequence* для всех элементов, заданных *tagOrId*, так что *func* вызывается всякий раз, когда это событие происходит для одного из этих элементов. Это похоже на [`Widget.bind`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.bind), но работает с элементами canvas, а не с целыми виджетами; можно привязывать только события мыши, клавиатуры и виртуальные. События мыши направляются текущему элементу, а события клавиатуры – элементу с фокусом (см. [`focus()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.focus)). Если *add* истинно, новая привязка добавляется к уже существующим привязкам для того же события, а не заменяет их. Возвращает идентификатор привязанной функции, который можно передать [`tag_unbind()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.tag_unbind).23272328#### `tag_unbind(tagOrId, sequence, funcid=None)`23292330Удаляет для всех элементов, заданных *tagOrId*, привязку к событию *sequence*. Если задан *funcid*, отвязывается и удаляется только этот колбэк (возвращённый [`tag_bind()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.tag_bind)).23312332Изменено в версии 3.13: Если указан *funcid*, отвязывается только этот колбэк.23332334#### `bbox(tagOrId, /, *tagOrIds)`23352336Возвращает 4-кортеж `(x1, y1, x2, y2)`, задающий приблизительный ограничивающий прямоугольник в пикселях, который охватывает все элементы, заданные *tagOrId* и любыми дополнительными *tagOrIds*. Результат может превышать истинный ограничивающий прямоугольник на несколько пикселей. Возвращает `None`, если ни один элемент не соответствует или соответствующие элементы нечего отображать.23372338Этот метод переопределяет унаследованный `Misc.bbox()`; используйте [`grid_bbox()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grid_bbox) для получения ограничивающего прямоугольника в сетке.23392340#### `canvasx(screenx, gridspacing=None)`23412342По заданной x-координате окна *screenx* возвращает x-координату canvas, отображаемую в этой позиции. Если задан *gridspacing*, результат округляется до ближайшего кратного *gridspacing* единицам.23432344#### `canvasy(screeny, gridspacing=None)`23452346По заданной y-координате окна *screeny* возвращает y-координату canvas, отображаемую в этой позиции. Если задан *gridspacing*, результат округляется до ближайшего кратного *gridspacing* единицам.23472348#### `focus()`23492350#### `focus(tagOrId, /)`23512352С параметром *tagOrId* устанавливает фокус клавиатуры canvas на первый элемент, заданный *tagOrId*, который поддерживает курсор вставки; если такого элемента нет, фокус остаётся без изменений. Если *tagOrId* – пустая строка, сбрасывает фокус так, что ни один элемент не имеет фокуса. Без аргументов возвращает идентификатор элемента, который в данный момент имеет фокус, или пустую строку, если такого нет. Элемент отображает курсор вставки только когда он сам является элементом с фокусом и его canvas имеет фокус ввода.23532354Этот метод затеняет унаследованный `Misc.focus()`; используйте [`focus_set()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.focus_set) для фокусировки самого виджета.23552356#### `icursor(tagOrId, index, /)`23572358Устанавливает курсор вставки элементов, заданных *tagOrId*, непосредственно перед символом, заданным *index*. Элементы, не поддерживающие курсор вставки, не затрагиваются. Курсор отображается только когда элемент имеет фокус, но его положение можно установить в любое время.23592360#### `index(tagOrId, index, /)`23612362Возвращает в виде целого числа числовой индекс внутри *tagOrId*, соответствующий *index*, который представляет собой текстовое описание позиции (для текстовых элементов – индекс символа, для отрезков и многоугольников – индекс в координатах). Если *tagOrId* соответствует нескольким элементам, используется первый из них, поддерживающий индексацию.23632364#### `select_adjust(tagOrId, index)`23652366Настраивает конец выделения в *tagOrId*, ближайший к *index*, так чтобы он находился на *index*, и делает другой конец якорной точкой для будущих вызовов [`select_to()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.select_to). Если выделение в данный момент не находится в *tagOrId*, это действует как `select_to()`.23672368#### `select_clear()`23692370Очищает выделение, если оно есть на этом холсте; в противном случае ничего не делает.23712372#### `select_from(tagOrId, index)`23732374Устанавливает точку привязки выделения непосредственно перед символом, заданным *index* в элементе, заданном *tagOrId*. Это не изменяет само выделение; оно устанавливает фиксированный конец для будущих вызовов [`select_to()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.select_to).23752376#### `select_item()`23772378Возвращает идентификатор элемента, содержащего выделение, или `None`, если выделение отсутствует на этом холсте. В отличие от методов [`find()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.find) и `find_*`, этот метод возвращает идентификатор в виде строки, а не целого числа.23792380#### `select_to(tagOrId, index)`23812382Устанавливает выделение на символы элемента *tagOrId* между точкой привязки выделения и *index*, включительно по *index*. Точкой привязки является та, что установлена последним вызовом [`select_adjust()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.select_adjust) или [`select_from()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.select_from).23832384#### `scan_mark(x, y)`23852386Запоминает *x*, *y* и текущий вид для использования в последующих вызовах [`scan_dragto()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.scan_dragto). Обычно привязывается к нажатию кнопки мыши в виджете.23872388#### `scan_dragto(x, y, gain=10)`23892390Прокручивает холст на величину, равную *gain*, умноженному на разницу между *x*, *y* и координатами, переданными последнему вызову [`scan_mark()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas.scan_mark). Обычно это привязывается к событиям движения мыши на виджете, создавая эффект перетаскивания холста с высокой скоростью в его окне.23912392#### `postscript(cnf={}, **kw)`23932394Генерирует представление части или всего холста в формате PostScript (Encapsulated PostScript, версия 3.0). Если задан параметр *file* или *channel*, PostScript записывается туда и возвращается пустая строка; в противном случае он возвращается в виде строки. По умолчанию генерируется только область, видимая в данный момент в окне, поэтому обычно необходимо либо сначала вызвать [`update()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.update), либо использовать параметры *width* и *height*. Поддерживаемые параметры включают *colormap*, *colormode*, *file*, *fontmap*, *height*, *pageanchor*, *pageheight*, *pagewidth*, *pagex*, *pagey*, *rotate*, *width*, *x* и *y*.23952396#### `class tkinter.Checkbutton(master=None, cnf={}, **kw)`23972398Виджет `Checkbutton` отображает текстовую строку, растровое изображение или картинку вместе с квадратным индикатором и переключает логическое выделение при нажатии. Он обладает всем поведением простой кнопки и, кроме того, может быть выбран: при выборе индикатор рисуется с галочкой, а связанная переменная устанавливается в значение `onvalue`, а при отмене выбора индикатор рисуется пустым, а переменная устанавливается в значение `offvalue`. Наследует от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget). В дополнение к стандартным опциям виджета, флажок принимает опции, описанные на странице руководства Tk `checkbutton`, такие как *variable*, *onvalue*, *offvalue* и *command*.23992400#### `invoke()`24012402Делает то же самое, что произошло бы при нажатии пользователем на флажок мышью: переключает состояние выделения кнопки и вызывает связанную команду, если она есть. Возвращает результат команды или пустую строку, если с флажком не связана ни одна команда. Это игнорируется, если состояние флажка равно `disabled`.24032404#### `select()`24052406Выбирает флажок и устанавливает связанную переменную в его значение `onvalue`.24072408#### `deselect()`24092410Отменяет выбор флажка и устанавливает связанную переменную в его значение `offvalue`.24112412#### `toggle()`24132414Переключает состояние выделения кнопки, перерисовывая её и изменяя связанную переменную, чтобы отразить новое состояние.24152416#### `flash()`24172418Мигает флажком, перерисовывая его несколько раз, чередуя активный и обычный цвета. По окончании мигания флажок остаётся в том же обычном или активном состоянии, в котором он был при вызове метода. Это игнорируется, если состояние флажка равно `disabled`.24192420#### `class tkinter.Entry(master=None, cnf={}, **kw)`24212422Виджет `Entry` отображает одну строку текста и позволяет пользователю редактировать её. Наследует от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget) и [`XView`](https://python-all.ru/3.16/library/tkinter.html#tkinter.XView); поскольку поля ввода могут содержать слишком длинные строки, не помещающиеся в окно, они поддерживают горизонтальную прокрутку через [`xview()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.XView.xview).24232424В дополнение к стандартным опциям виджета, поле ввода принимает опции, описанные на странице руководства Tk `entry`. Примечательными являются *textvariable* (имя переменной, синхронизируемой с содержимым поля ввода), *show* (если установлено, каждый символ отображается как заданный символ, а не его истинное значение, полезно для ввода пароля), *validate* и *validatecommand* (которые вместе позволяют колбэку принять или отклонить правки), а также *state* (одно из значений `'normal'`, `'disabled'` или `'readonly'`).24252426Многие из приведенных ниже методов принимают аргумент *index*, который выбирает символ в строке поля ввода. Как описано на странице руководства Tk `entry`, *index* может быть числом (начиная с 0), `'insert'` (символ сразу после курсора вставки), `'end'` (сразу после последнего символа), `'anchor'` (точка привязки выделения), `'sel.first'` и `'sel.last'` (концы выделения), или `@x` (символ, соответствующий пиксельной координате x *x* в окне). Индексы вне диапазона округляются до ближайшего допустимого значения.24272428#### `delete(first, last=None)`24292430Удаляет символы от индекса *first* до индекса *last*, не включая его. Если *last* опущен, удаляется только один символ на позиции *first*.24312432#### `get()`24332434Возвращает текущую строку виджета Entry.24352436#### `insert(indexstring)`24372438Вставляет *string* непосредственно перед символом, заданным *index*.24392440#### `icursor(index)`24412442Устанавливает отображение курсора вставки непосредственно перед символом, заданным *index*.24432444#### `index(index)`24452446Возвращает числовой индекс, соответствующий *index*.24472448#### `selection_adjust(index)`24492450Находит конец выделения, ближайший к символу, заданному *index*, и перемещает этот конец на *index* (включительно, но не дальше); другой конец становится якорной точкой для последующих вызовов [`selection_to()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Entry.selection_to). Если в поле ввода нет выделения, создаётся новое между *index* и последней якорной точкой включительно. [`select_adjust()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Entry.select_adjust) – это псевдоним `selection_adjust()`.24512452#### `selection_clear()`24532454Очищает выделение, если оно находится в данном виджете. Если выделение не в этом виджете, метод не даёт эффекта. [`select_clear()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Entry.select_clear) – это псевдоним `selection_clear()`.24552456> **Примечание**2457>2458> Этот метод переопределяет унаследованный [`Misc.selection_clear()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.selection_clear), который очищает X-выделение; этот метод недоступен для виджета `Entry`.24592460#### `selection_from(index)`24612462Устанавливает якорную точку выделения непосредственно перед символом, заданным *index*, не изменяя выделения. [`select_from()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Entry.select_from) – это псевдоним `selection_from()`.24632464#### `selection_present()`24652466Возвращает `True`, если в поле ввода есть выделенные символы, иначе `False`. [`select_present()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Entry.select_present) – это псевдоним `selection_present()`.24672468#### `selection_range(start, end)`24692470Устанавливает выделение, включающее символы, начиная с символа, индексированного *start*, и заканчивая символом, непосредственно предшествующим *end*. Если *end* ссылается на тот же символ, что и *start*, или более ранний, то выделение очищается. [`select_range()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Entry.select_range) – это псевдоним `selection_range()`.24712472#### `selection_to(index)`24732474Устанавливает выделение между якорной точкой и *index*: если *index* находится до якорной точки, выделение идёт от *index* до якорной точки, не включая её; если *index* находится после неё, от якорной точки до *index*, не включая; если они совпадают, ничего не происходит. Якорная точка – это точка, установленная последним вызовом [`selection_from()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Entry.selection_from) или [`selection_adjust()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Entry.selection_adjust). Если в поле ввода нет выделения, создаётся новое с использованием последней якорной точки. [`select_to()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Entry.select_to) – это псевдоним `selection_to()`.24752476#### `scan_mark(x)`24772478Запоминает *x* и текущий вид в окне поля ввода для использования в последующих вызовах [`scan_dragto()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Entry.scan_dragto). Обычно связано с нажатием кнопки мыши в виджете.24792480#### `scan_dragto(x)`24812482Вычисляет разницу между *x* и *x*, переданным в последний вызов [`scan_mark()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Entry.scan_mark), и смещает вид влево или вправо на 10-кратную величину этой разницы. Обычно используется с событиями движения мыши, чтобы создать эффект перетаскивания поля ввода с высокой скоростью по окну.24832484#### `validate()`24852486Принудительно выполняет проверку команды, заданной опцией *validatecommand*, независимо от условий, указанных опцией *validate*, и возвращает, считается ли значение допустимым.24872488Добавлено в версии 3.16.0a0 (не выпущено).24892490#### `class tkinter.Frame(master=None, cnf={}, **kw)`24912492Виджет `Frame` – это простой контейнер. Его основное назначение – служить разделителем или контейнером для сложных макетов окон; его единственные возможности – это фон и необязательная трёхмерная рамка, чтобы рамка выглядела приподнятой или утопленной. Наследует от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget). Обратитесь к странице руководства Tk `frame` для полного списка параметров.24932494#### `class tkinter.Label(master=None, cnf={}, **kw)`24952496Виджет `Label` отображает неинтерактивную текстовую строку, растровое изображение или картинку. Отображаемый текст задаётся параметром *text* или связывается с переменной через *textvariable*, а изображение можно показать с помощью параметра *image*. Весь текст должен быть одного шрифта, но может занимать несколько строк, и один символ может быть подчёркнут с помощью параметра *underline*. Наследует от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget). Обратитесь к странице руководства Tk `label` для полного списка параметров.24972498#### `class tkinter.LabelFrame(master=None, cnf={}, **kw)`24992500Виджет `LabelFrame` – это контейнер, который обладает возможностями [`Frame`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Frame) плюс возможность отображать метку. Текст метки задаётся параметром *text* и позиционируется с помощью *labelanchor*, или в качестве метки можно использовать произвольный виджет, передав его в параметре *labelwidget*. Наследует от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget). Обратитесь к странице руководства Tk `labelframe` для полного списка параметров.25012502#### `class tkinter.Listbox(master=None, cnf={}, **kw)`25032504Виджет `Listbox` отображает список однострочных текстовых элементов, по одному на строку, из которых пользователь может выбрать один или несколько. Поведение выделения определяется параметром *selectmode*, который может быть одним из: `browse` (по умолчанию; не более одного элемента, который можно перетаскивать мышью), `single` (не более одного элемента), `multiple` (любое количество элементов, переключаются индивидуально) или `extended` (любое количество элементов, включая несмежные диапазоны, выбираются щелчком и перетаскиванием). Наследует от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget), [`XView`](https://python-all.ru/3.16/library/tkinter.html#tkinter.XView) и [`YView`](https://python-all.ru/3.16/library/tkinter.html#tkinter.YView), поэтому представление можно прокручивать по горизонтали и вертикали с помощью [`xview()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.XView.xview) и [`yview()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.YView.yview). Обратитесь к странице руководства Tk `listbox` для полного списка параметров.25052506Многие из методов принимают аргумент *индекс*, идентифицирующий конкретный элемент. Как описано на странице руководства Tk `listbox`, *индекс* может быть числовым индексом (начиная с 0 сверху), `'active'` (элемент в позиции курсора, задаётся с помощью [`activate()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox.activate)), `'anchor'` (якорь выделения, задаётся с помощью [`selection_anchor()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox.selection_anchor)), `'end'` (последний элемент, или для [`index()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox.index) и [`insert()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox.insert) позиция сразу после него), или `@x,y` (элемент, покрывающий пиксельные координаты *x*, *y* в окне listbox). Аргументы с именами *first* и *last* являются индексами тех же форм.25072508#### `insert(index, *elements)`25092510Вставляет заданные *элементы* как новые элементы непосредственно перед элементом, заданным *индексом*. Если *индекс* равен `'end'`, новые элементы добавляются в конец списка.25112512#### `delete(first, last=None)`25132514Удаляет элементы в диапазоне от *first* до *last* включительно. Если *last* опущен, по умолчанию используется *first*, так что удаляется один элемент.25152516#### `get(first, last=None)`25172518Если *last* опущен, возвращает содержимое элемента, заданного *first*, или пустую строку, если *first* ссылается на несуществующий элемент. Если *last* задан, возвращает кортеж всех элементов в диапазоне от *first* до *last* включительно.25192520#### `size()`25212522Возвращает общее количество элементов в listbox.25232524Этот метод затеняет унаследованный `Misc.size()`; используйте [`grid_size()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grid_size) для размера сетки.25252526#### `index(index)`25272528Возвращает целочисленное значение индекса, соответствующее *индексу*, или `None`, если *индекс* выходит за пределы диапазона. Если *индекс* равен `'end'`, результатом является количество элементов в listbox (не индекс последнего элемента).25292530#### `bbox(index)`25312532Возвращает кортеж `(x, y, width, height)`, описывающий ограничивающий прямоугольник (в пикселях относительно виджета) текста элемента, заданного *индексом*. Возвращает `None`, если ни одна часть этого элемента не видна на экране, или если *индекс* ссылается на несуществующий элемент; если элемент виден лишь частично, результат всё равно даёт полную область элемента, включая невидимые части.25332534Этот метод переопределяет унаследованный `Misc.bbox()`; используйте [`grid_bbox()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grid_bbox) для получения ограничивающего прямоугольника в сетке.25352536#### `nearest(y)`25372538По заданной y-координате в окне listbox возвращает индекс видимого элемента, ближайшего к этой y-координате.25392540#### `see(index)`25412542Настраивает отображение так, чтобы элемент, заданный *индексом*, стал видимым. Если элемент уже видим, метод не даёт эффекта; если он находится у края окна, listbox прокручивается ровно настолько, чтобы показать его у этого края; в противном случае listbox прокручивается, чтобы центрировать элемент.25432544#### `activate(index)`25452546Устанавливает активный элемент равным элементу, заданному *индексом*. Если *индекс* находится вне диапазона элементов, вместо него активируется ближайший элемент. Активный элемент отображается в соответствии с опцией *activestyle*, когда виджет имеет фокус ввода; его индекс можно получить с помощью индекса `'active'`.25472548#### `curselection()`25492550Возвращает кортеж, содержащий числовые индексы всех элементов, которые в данный момент выбраны, или пустой кортеж, если ни один элемент не выбран.25512552#### `selection_anchor(index)`25532554Устанавливает якорь выделения на элемент, заданный *индексом*. Если *индекс* ссылается на несуществующий элемент, используется ближайший элемент. Якорь выделения – это конец выделения, который остаётся фиксированным при расширении выделения мышью; впоследствии на него можно ссылаться с помощью индекса `'anchor'`. [`select_anchor()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox.select_anchor) является псевдонимом `selection_anchor()`.25552556#### `selection_clear(first, last=None)`25572558Снимает выделение с любых элементов в диапазоне от *first* до *last* включительно, которые выделены. Состояние выделения элементов вне этого диапазона не изменяется. [`select_clear()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox.select_clear) является псевдонимом `selection_clear()`.25592560> **Примечание**2561>2562> Этот метод переопределяет унаследованный [`Misc.selection_clear()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.selection_clear), который очищает X-выделение; этот метод недоступен в `Listbox`.25632564#### `selection_includes(index)`25652566Возвращает `True`, если элемент, заданный *индексом*, в данный момент выбран, иначе `False`. [`select_includes()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox.select_includes) является псевдонимом `selection_includes()`.25672568#### `selection_set(first, last=None)`25692570Выделяет все элементы в диапазоне от *first* до *last* включительно, не затрагивая состояние выделения элементов вне этого диапазона. [`select_set()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox.select_set) является псевдонимом `selection_set()`.25712572#### `itemcget(index, option)`25732574Возвращает текущее значение конфигурационного параметра *option* для элемента, заданного *index*.25752576#### `itemconfigure(index, cnf=None, **kw)`25772578Запрашивает или изменяет параметры конфигурации элемента, заданного *index*. Это зеркально отражает [`configure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.configure), но применяется к отдельному элементу, а не ко всему списковому полю. Без параметров возвращает словарь с описанием текущих параметров элемента; иначе устанавливает переданные параметры. Поддерживаемые параметры элемента: *background*, *foreground*, *selectbackground* и *selectforeground*. [`itemconfig()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox.itemconfig) – это псевдоним `itemconfigure()`.25792580#### `scan_mark(x, y)`25812582Запоминает *x*, *y* и текущий вид для использования в последующих вызовах [`scan_dragto()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox.scan_dragto). Обычно привязывается к нажатию кнопки мыши в виджете.25832584#### `scan_dragto(x, y)`25852586Прокручивает список на величину, равную разнице между *x*, *y* и координатами, переданными последнему вызову [`scan_mark()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox.scan_mark), умноженную на 10. Обычно привязывается к событиям движения мыши в виджете, создавая эффект быстрого перетаскивания списка по окну.25872588#### `class tkinter.Menu(master=None, cnf={}, **kw)`25892590Виджет `Menu` отображает столбец записей, каждая из которых может быть командой, флажком, радиокнопкой, каскадом (который открывает связанное подменю) или разделителем. Меню используются как строка меню главного окна, как выпадающие меню, открываемые из каскадной записи или кнопки меню, а также как контекстные меню. Наследует от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget).25912592Многие методы записей принимают аргумент *index*, определяющий, с какой записью работать. Как описано на странице руководства Tk `menu`, *index* может быть числовым индексом (начиная с 0 сверху), `'active'` (текущая активная запись), `'end'` или `'last'` (самая нижняя запись), `'none'` (нет записи, в Tcl записывается как `{}`), `@y` (запись, покрывающая пиксельную координату y *y* в окне меню) или шаблоном, который сопоставляется с метками записей сверху вниз.25932594#### `add(itemType, cnf={}, **kw)`25952596Добавляет новую запись в конец меню. *itemType* – одно из значений `'command'`, `'cascade'`, `'checkbutton'`, `'radiobutton'` или `'separator'` и определяет тип новой записи; остальные параметры настраивают её. Методы-сокращения `add_command()`, `add_cascade()`, `add_checkbutton()`, `add_radiobutton()` и `add_separator()` вызывают этот метод с соответствующим *itemType*.25972598Запись настраивается следующими параметрами, хотя не каждый параметр применим ко всем типам записей (разделитель не принимает ни одного из них):25992600***label***26012602Текст, отображаемый в записи.26032604***command***26052606Функция, вызываемая при активации записи (для записей типа command, checkbutton и radiobutton).26072608***accelerator***26092610Строка, отображаемая справа от записи для указания клавиш быстрого вызова; сама она не создаёт привязку.26112612***underline***26132614Индекс символа в метке, который будет подчёркнут для навигации с клавиатуры.26152616***state***26172618Одно из `'normal'`, `'active'` или `'disabled'`.26192620***image***26212622Изображение, отображаемое вместо текстовой метки или вместе с ней.26232624***составной***26252626Где показывать изображение относительно текста: `'none'` (по умолчанию), `'text'`, `'image'`, `'top'`, `'bottom'`, `'left'` или `'right'`.26272628***bitmap***26292630Растровое изображение, отображаемое вместо текстовой метки.26312632***font***26332634Шрифт, используемый для текста.26352636***background*, *foreground***26372638Цвета фона и текста элемента в обычном состоянии (игнорируется на macOS).26392640***activebackground*, *activeforeground***26412642Цвета фона и текста, используемые, когда элемент активен (игнорируется на macOS).26432644***columnbreak***26452646Если true, элемент начинает новую колонку вместо того, чтобы располагаться под предыдущим элементом.26472648***hidemargin***26492650Если true, стандартный отступ вокруг элемента убирается; это полезно, когда меню используется как палитра.26512652***menu***26532654Подменю, открываемое каскадным элементом; оно должно быть дочерним по отношению к данному меню.26552656***переменная***26572658Переменная, связанная с элементом флажка или переключателя.26592660***onvalue*, *offvalue***26612662Значения, сохраняемые в *variable*, когда элемент флажка выбран или сброшен.26632664***значение***26652666Значение, сохраняемое в *variable*, когда элемент переключателя выбран.26672668***indicatoron***26692670Определяет, отображать ли индикатор элемента флажка или переключателя.26712672***selectcolor***26732674Цвет индикатора элемента флажка или переключателя, когда он выбран.26752676***selectimage***26772678Изображение, отображаемое, когда элемент флажка или переключателя выбран и также задано *image*.26792680#### `add_cascade(cnf={}, **kw)`26812682Добавляет новый каскадный элемент в нижнюю часть меню. Каскадный элемент имеет связанное подменю, задаваемое его опцией *menu*, которая должна быть дочерним меню по отношению к данному меню; при открытии элемента подменю отображается рядом с ним.26832684#### `add_checkbutton(cnf={}, **kw)`26852686Добавляет новый элемент флажка в нижнюю часть меню. При вызове элемент флажка переключается между значениями *onvalue* и *offvalue*, сохраняя результат в связанной *variable*, и отображает индикатор, показывающий, выбран ли он.26872688#### `add_command(cnf={}, **kw)`26892690Добавляет новый командный элемент в нижнюю часть меню. Командный элемент ведёт себя как кнопка: при его вызове выполняется колбэк, заданный опцией *command*.26912692#### `add_radiobutton(cnf={}, **kw)`26932694Добавляет новый элемент переключателя в нижнюю часть меню. Элементы переключателей, использующие одну и ту же *variable*, образуют группу, в которой в любой момент может быть выбран только один; при выборе элемента его *value* сохраняется в переменной.26952696#### `add_separator(cnf={}, **kw)`26972698Добавляет разделитель в нижнюю часть меню. Разделитель отображается в виде горизонтальной линии и не может быть активирован или вызван.26992700#### `insert(index, itemType, cnf={}, **kw)`27012702То же, что и [`add()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Menu.add), за исключением того, что новый элемент вставляется непосредственно перед элементом с индексом *index*, а не добавляется в конец меню. *itemType* – одно из `'command'`, `'cascade'`, `'checkbutton'`, `'radiobutton'` или `'separator'`. Вспомогательные методы `insert_command()`, `insert_cascade()`, `insert_checkbutton()`, `insert_radiobutton()` и `insert_separator()` вызывают этот метод с соответствующим *itemType*.27032704#### `insert_cascade(index, cnf={}, **kw)`27052706Вставить новый каскадный элемент перед элементом, заданным *index* (см. [`add_cascade()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Menu.add_cascade)).27072708#### `insert_checkbutton(index, cnf={}, **kw)`27092710Вставить новый элемент-флажок перед элементом, заданным *index* (см. [`add_checkbutton()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Menu.add_checkbutton)).27112712#### `insert_command(index, cnf={}, **kw)`27132714Вставить новый элемент-команду перед элементом, заданным *index* (см. [`add_command()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Menu.add_command)).27152716#### `insert_radiobutton(index, cnf={}, **kw)`27172718Вставить новый элемент-переключатель перед элементом, заданным *index* (см. [`add_radiobutton()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Menu.add_radiobutton)).27192720#### `insert_separator(index, cnf={}, **kw)`27212722Вставить разделитель перед элементом, заданным *index* (см. [`add_separator()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Menu.add_separator)).27232724#### `delete(index1, index2=None)`27252726Удаляет все пункты меню между *index1* и *index2* включительно. Если *index2* опущен, по умолчанию используется *index1*, так что удаляется один элемент. Попытки удалить отрывной элемент игнорируются; удалите его, изменив параметр *tearoff*.27272728#### `entrycget(index, option)`27292730Возвращает текущее значение параметра конфигурации *option* для элемента, заданного *index*.27312732#### `entryconfigure(index, cnf=None, **kw)`27332734Запрашивает или изменяет параметры конфигурации элемента, заданного *index*. Это работает как [`configure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.configure), но применяется к отдельному элементу, а не ко всему меню. Без аргументов возвращает словарь с текущими параметрами элемента; иначе устанавливает указанные параметры. Поддерживаются те же параметры, что принимает [`add()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Menu.add) для данного типа элемента. [`entryconfig()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Menu.entryconfig) является псевдонимом `entryconfigure()`.27352736#### `index(index)`27372738Возвращает числовой индекс, соответствующий *index*, или `None`, если *index* не указывает ни на один элемент.27392740#### `type(index)`27412742Возвращает тип элемента, заданного *index*: одно из значений `'command'`, `'cascade'`, `'checkbutton'`, `'radiobutton'`, `'separator'` или `'tearoff'` (для отрывного элемента).27432744#### `activate(index)`27452746Делает элемент, заданный *index*, активным, перерисовывая его активными цветами, и деактивирует ранее активный элемент. Если *index* не указывает ни на один элемент или выбранный элемент отключён, в меню не будет активного элемента.27472748#### `invoke(index)`27492750Вызывает действие элемента, заданного *index*, как если бы на нём щёлкнули. Если элемент отключён, ничего не происходит. Если с элементом связана *command*, возвращается результат выполнения этой команды; в противном случае возвращается пустая строка.27512752#### `post(x, y)`27532754Отображает меню на экране в координатах корневого окна *x* и *y*, при необходимости корректируя их, чтобы всё меню было видимо. Если указан параметр *postcommand*, он вычисляется перед отображением меню.27552756#### `postcascade(index)`27572758Показывает подменю, связанное с каскадным пунктом, заданным *index*, скрывая любое ранее показанное подменю. Это не имеет эффекта, если *index* не указывает на каскадный пункт или если само меню не показано.27592760Добавлено в версии 3.16.0a0 (не выпущено).27612762#### `tk_popup(x, y, entry='')`27632764Отображает меню как всплывающее в координатах корневого окна *x* и *y*. Если указан *entry*, меню позиционируется так, чтобы этот элемент отображался под указателем.27652766#### `unpost()`27672768Скрывает меню, чтобы оно больше не отображалось, также скрывая любые отображённые каскадные подменю нижнего уровня. Не действует в Windows и macOS, которые управляют скрытием меню самостоятельно.27692770#### `xposition(index)`27712772Возвращает x-координату (в окне меню) самого левого пикселя элемента, заданного *index*.27732774Добавлено в версии 3.3.27752776#### `yposition(index)`27772778Возвращает координату y самого верхнего пикселя записи, заданной *index*, в окне меню.27792780#### `class tkinter.Menubutton(master=None, cnf={}, **kw)`27812782Виджет `Menubutton` отображает текстовую строку, растровое изображение или картинку и при нажатии показывает связанное [`Menu`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Menu), заданное параметром *menu*. Как и [`Label`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Label), он может показывать *text*, *textvariable* или *image*, а параметр *direction* управляет тем, где появится меню относительно кнопки. Наследуется от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget). Полный список параметров приведен на странице руководства Tk `menubutton`.27832784#### `class tkinter.Message(master=None, cnf={}, **kw)`27852786Виджет `Message` отображает неинтерактивную текстовую строку, заданную параметром *text* или связанную с переменной через *textvariable*. В отличие от [`Label`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Label), он разбивает строку на несколько строк для получения заданного соотношения сторон, выбирая разрывы строк на границах слов, и может выравнивать текст по левому краю, по центру или по правому. Наследуется от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget). Полный список параметров приведен на странице руководства Tk `message`.27872788#### `class tkinter.OptionMenu(master, variable, value, *values, **kwargs)`27892790Вспомогательный подкласс [`Menubutton`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Menubutton), отображающий всплывающее меню со взаимоисключающими вариантами выбора. *variable* – это [`Variable`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable), синхронизируемый с выбором, *value* начальный выбор, а *values* – остальные пункты меню. Ключевой аргумент *command* может задавать колбэк, который вызывается с выбранным значением, а ключевой аргумент *name* задаёт имя виджета Tk. Остальные ключевые аргументы передаются базовому `Menubutton` и могут переопределять его стандартный вид.27912792#### `destroy()`27932794Уничтожает виджет, а также очищает связанное всплывающее меню.27952796Изменено в версии 3.14: Добавлена поддержка аргумента-ключевого слова *name*.27972798Изменено в версии 3.16.0a0 (не выпущена): Теперь другие параметры [`Menubutton`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Menubutton) можно передавать как ключевые аргументы.27992800#### `class tkinter.PanedWindow(master=None, cnf={}, **kw)`28012802`PanedWindow` – это виджет-менеджер геометрии, который размещает любое количество дочерних *панелей* в ряд (если *orient* равен `'horizontal'`) или в колонку (если *orient* равен `'vertical'`). Каждая панель содержит один виджет, и каждая пара соседних панелей разделена подвижным *разделителем*, который пользователь может перетаскивать мышью для изменения размеров виджетов по обе стороны от него. Наследуется от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget).28032804Параметр *orient* выбирает направление расположения, *sashwidth* задаёт ширину каждого разделителя, а *sashrelief* – его рельеф. Если *showhandle* равен true, на каждом разделителе рисуется небольшая ручка, за которую пользователь может ухватиться, чтобы перетащить его. Полный список параметров приведен на странице руководства Tk `panedwindow`.28052806#### `add(child, **kw)`28072808Добавляет *child* в panedwindow в качестве новой панели, размещая её после всех существующих панелей. Именованные аргументы задают параметры управления для *child*; это могут быть любые параметры, принимаемые [`paneconfigure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PanedWindow.paneconfigure).28092810#### `remove(child)`28112812Удаляет панель, содержащую *child*, из panedwindow. Все параметры управления геометрией для *child* забываются. [`forget()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PanedWindow.forget) – это псевдоним `remove()`. Этот метод скрывает унаследованный `forget()`; используйте [`pack_forget()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Pack.pack_forget), [`grid_forget()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Grid.grid_forget) или [`place_forget()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Place.place_forget), чтобы удалить сам виджет из его менеджера.28132814#### `panes()`28152816Возвращает кортеж виджетов, управляемых panedwindow, по одному на панель, в порядке их расположения.28172818#### `panecget(child, option)`28192820Возвращает текущее значение параметра управления *option* для панели, содержащей *child*. *option* может быть любым значением, допустимым для [`paneconfigure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PanedWindow.paneconfigure).28212822#### `paneconfigure(tagOrId, cnf=None, **kw)`28232824Запрашивает или изменяет параметры управления панели, содержащей виджет *tagOrId*. Без указания параметров возвращает словарь со всеми доступными параметрами панели; если передана единственная строка – имя параметра, возвращает описание этого параметра; в противном случае устанавливает заданные параметры. Поддерживаемые параметры включают *after* и *before* (вставка панели после или до другого управляемого окна), *height* и *width* (внешние размеры окна, включая границу), *minsize* (минимальный размер в направлении панели), *padx* и *pady* (дополнительное пространство с каждой стороны окна), *sticky* (позиционирование или растяжение окна внутри увеличенной панели с помощью строки из символов `n`, `s`, `e` и `w`), *hide* (скрыть панель, оставив её в списке панелей) и *stretch* (как распределяется дополнительное пространство между панелями: одно из `'always'`, `'first'`, `'last'`, `'middle'` или `'never'`). [`paneconfig()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PanedWindow.paneconfig) – это псевдоним `paneconfigure()`.28252826#### `identify(x, y)`28272828Определяет компонент panedwindow под точкой с координатами *x* и *y* в оконных координатах. Если точка находится над разделителем или ручкой разделителя, результатом будет кортеж из двух элементов: индекс разделителя или ручки и слово, указывающее, находится ли точка над разделителем или ручкой, например `(0, 'sash')` или `(2, 'handle')`. Если точка находится над любой другой частью panedwindow, результатом будет пустая строка.28292830#### `sash(*args)`28312832Запрашивает или изменяет положение разделителей в panedwindow. Это тонкая обёртка вокруг подкоманды Tk `sash`; обычно вместо неё следует использовать удобные методы [`sash_coord()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PanedWindow.sash_coord), [`sash_mark()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PanedWindow.sash_mark) и [`sash_place()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PanedWindow.sash_place).28332834#### `sash_coord(index)`28352836Возвращает пару координат x и y для разделителя с индексом *index*, который должен быть целым числом от 0 до (количество панелей в panedwindow минус 1). Возвращаемые координаты – это координаты левого верхнего угла области, содержащей разделитель.28372838#### `sash_mark(index)`28392840Запоминает текущее положение мыши для разделителя с индексом *index* для последующего перемещения разделителя операциями перетаскивания.28412842#### `sash_place(index, x, y)`28432844Поместите sash, заданный через *index*, в координаты *x* и *y*.28452846#### `proxy(*args)`28472848Запрос или изменение позиции прокси-разделителя (sash proxy), «призрачного» разделителя, отображаемого во время перетаскивания разделителя при непрозрачном изменении размера. Это тонкая обёртка вокруг подкоманды Tk `proxy`; вместо неё обычно следует использовать удобные методы [`proxy_coord()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PanedWindow.proxy_coord), [`proxy_forget()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PanedWindow.proxy_forget) и [`proxy_place()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PanedWindow.proxy_place).28492850#### `proxy_coord()`28512852Возвращает кортеж, содержащий координаты x и y последнего местоположения прокси.28532854#### `proxy_forget()`28552856Удаляет прокси с экрана.28572858#### `proxy_place(x, y)`28592860Помещает прокси в координаты *x* и *y*.28612862#### `class tkinter.Radiobutton(master=None, cnf={}, **kw)`28632864Виджет `Radiobutton` отображает текстовую строку, растровое изображение или картинку вместе с ромбовидным или круглым индикатором и позволяет выбрать один вариант из нескольких. Он обладает всем поведением простой кнопки и, кроме того, может быть выбран: обычно несколько радиокнопок используют одну *variable*, и выбор одной устанавливает эту переменную в *value* радиокнопки; каждая радиокнопка также отслеживает переменную и автоматически выбирает или снимает выбор при изменении переменной. Наследует от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget). В дополнение к стандартным опциям виджета, радиокнопка принимает опции, описанные на странице руководства Tk `radiobutton`, такие как *variable*, *value* и *command*.28652866#### `invoke()`28672868Делает то же самое, что произошло бы при нажатии пользователем на радиокнопку мышью: выбирает кнопку и вызывает связанную команду, если таковая имеется. Возвращает результат команды или пустую строку, если с радиокнопкой не связана ни одна команда. Игнорируется, если состояние радиокнопки `disabled`.28692870#### `select()`28712872Выбирает радиокнопку и устанавливает связанную переменную в значение, соответствующее этому виджету.28732874#### `deselect()`28752876Снимает выбор с радиокнопки и устанавливает связанную переменную в пустую строку. Если эта радиокнопка не была выбрана, действие не выполняется.28772878#### `flash()`28792880Мигает радиокнопкой, перерисовывая её несколько раз с чередованием активного и обычного цветов. По завершении мигания радиокнопка остаётся в том же обычном или активном состоянии, что и в момент вызова метода. Игнорируется, если состояние радиокнопки `disabled`.28812882#### `class tkinter.Scale(master=None, cnf={}, **kw)`28832884Виджет `Scale` позволяет пользователю выбрать числовое значение путём перемещения ползунка вдоль дорожки. Он может быть ориентирован вертикально или горизонтально и при желании отображать метку и текущее значение. Наследует от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget).28852886В дополнение к стандартным опциям виджета, шкала (scale) принимает опции, описанные на странице руководства Tk `scale`, такие как *from\_*, *to*, *resolution*, *orient*, *tickinterval*, *variable* и *command*. Как и везде в `tkinter`, ведущий `-` имени опции Tk опускается; *from* записывается как `from_`, потому что [`from`](https://python-all.ru/3.16/reference/simple_stmts.html#from) является ключевым словом Python.28872888При нецелом *resolution* см. [числовые значения и локаль](https://python-all.ru/3.16/library/tkinter.html#tkinter-numeric-locale).28892890#### `get()`28912892Возвращает текущее значение шкалы. Результат является целым числом, если *resolution* шкалы даёт целые числа, и числом с плавающей запятой в противном случае.28932894#### `set(value)`28952896Устанавливает шкалу в значение *value*, соответственно перемещая ползунок. Не действует, если шкала отключена.28972898#### `coords(value=None)`28992900Возвращает кортеж `(x, y)`, содержащий пиксельные координаты относительно виджета точки на центральной линии дорожки, соответствующей *value*. Если *value* опущен, используется текущее значение шкалы.29012902#### `identify(x, y)`29032904Возвращает строку, описывающую часть шкалы в пиксельных координатах *x*, *y*: `'slider'`, `'trough1'` (часть дорожки выше или левее ползунка), `'trough2'` (ниже или правее ползунка), или пустую строку, если точка не находится ни над одним из этих элементов.29052906#### `class tkinter.Scrollbar(master=None, cnf={}, **kw)`29072908Виджет `Scrollbar` отображает ползунок и две стрелки, позволяющие пользователю прокручивать связанный виджет, например [`Listbox`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox), [`Text`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text), [`Canvas`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas) или [`Entry`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Entry). Он соединяется с прокручиваемым виджетом путём установки опции *xscrollcommand* или *yscrollcommand* этого виджета на метод [`set()`](https://python-all.ru/3.16/library/stdtypes.html#set) полосы прокрутки, а опции *command* полосы прокрутки – на метод [`xview()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.XView.xview) или [`yview()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.YView.yview) прокручиваемого виджета. Наследуется от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget).29092910#### `get()`29112912Возвращает текущие настройки полосы прокрутки в виде кортежа `(first, last)` из двух дробей от 0 до 1, описывающих часть документа, которая в данный момент видна, как было последний раз передано в [`set()`](https://python-all.ru/3.16/library/stdtypes.html#set).29132914#### `set(first, last)`29152916Устанавливает полосу прокрутки. *first* и *last* – это дроби от 0 до 1, задающие позиции начала и конца видимой части связанного документа. Этот метод обычно регистрируется как *xscrollcommand* или *yscrollcommand* прокручиваемого виджета и вызывается этим виджетом.29172918#### `activate(index=None)`29192920Помечает элемент *index* (один из `'arrow1'`, `'slider'` или `'arrow2'`) как активный, отображая его в соответствии с опциями *activebackground* и *activerelief*. Если *index* опущен, возвращает имя текущего активного элемента или `None`, если ни один элемент не активен.29212922Изменено в версии 3.5: Аргумент *index* теперь необязателен.29232924#### `delta(deltax, deltay)`29252926Возвращает число с плавающей точкой, указывающее дробное изменение настройки полосы прокрутки, соответствующее перемещению ползунка на *deltax* пикселей по горизонтали (для горизонтальных полос прокрутки) или на *deltay* пикселей по вертикали (для вертикальных полос прокрутки).29272928#### `fraction(x, y)`29292930Возвращает число с плавающей точкой от 0 до 1, указывающее, где находится точка с пиксельными координатами *x*, *y* в желобе: 0 соответствует верхнему или левому краю желоба, а 1 – нижнему или правому.29312932#### `identify(x, y)`29332934Возвращает имя элемента под пиксельными координатами *x*, *y* (например, `'arrow1'`) или пустую строку, если точка не находится ни в одном элементе полосы прокрутки.29352936#### `class tkinter.Spinbox(master=None, cnf={}, **kw)`29372938Виджет `Spinbox` – это виджет, похожий на [`Entry`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Entry), с парой кнопок со стрелками вверх/вниз, позволяющих пользователю перебирать диапазон значений, а также редактировать значение напрямую. Набор значений может быть числовым диапазоном, задаваемым опциями *from\_*, *to* и *increment*, или явным списком строк, задаваемым опцией *values* (которая имеет приоритет над диапазоном). Каждый раз при нажатии на стрелку вызывается колбэк *command*, если он задан; опция *wrap* управляет тем, будет ли переход за пределы диапазона зацикливаться на другой стороне; опция *format* определяет форматирование числовых значений; а опция *validate* включает проверку введённого текста. Наследуется от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget) и [`XView`](https://python-all.ru/3.16/library/tkinter.html#tkinter.XView).29392940При нецелом *increment* см. [числовые значения и локаль](https://python-all.ru/3.16/library/tkinter.html#tkinter-numeric-locale).29412942Многие методы принимают аргумент *index*, идентифицирующий символ в строке spinbox. Как описано на странице руководства Tk `spinbox`, *index* может быть числовым индексом (начиная с 0), `'anchor'` (якорная точка выделения), `'end'` (сразу после последнего символа), `'insert'` (символ сразу после курсора вставки), `'sel.first'` или `'sel.last'` (концы выделения) или `@x` (символ, покрывающий пиксельную координату x *x* в окне).29432944#### `get()`29452946Возвращает строку spinbox.29472948#### `insert(index, s)`29492950Вставляет символы строки *s* непосредственно перед символом, заданным *index*.29512952#### `delete(first, last=None)`29532954Удаляет один или несколько символов spinbox. *first* – это индекс первого удаляемого символа, а *last* – индекс символа, следующего за последним удаляемым. Если *last* опущен, удаляется один символ по индексу *first*.29552956#### `icursor(index)`29572958Устанавливает отображение курсора вставки непосредственно перед символом, заданным *index*.29592960#### `index(index)`29612962Возвращает числовой индекс, соответствующий *index*, в виде строки.29632964#### `bbox(index)`29652966Возвращает кортеж из четырёх целых чисел `(x, y, width, height)`, описывающих ограничивающий прямоугольник символа, заданного *index*. *x* и *y* – это пиксельные координаты левого верхнего угла символа относительно виджета, а *width* и *height* – его размер в пикселях. Ограничивающий прямоугольник может относиться к области за пределами видимой части окна.29672968Этот метод переопределяет унаследованный `Misc.bbox()`; используйте [`grid_bbox()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grid_bbox) для получения ограничивающего прямоугольника в сетке.29692970#### `identify(x, y)`29712972Возвращает имя элемента окна по координатам пикселей *x*, *y*: одно из `'buttondown'`, `'buttonup'`, `'entry'` или `'none'`.29732974#### `invoke(element)`29752976Вызывает кнопку вращения, заданную *элементом*, либо `'buttonup'`, либо `'buttondown'`, запуская связанное с ней действие.29772978#### `scan(*args)`29792980Тонкая обёртка вокруг подкоманды виджета Tk `scan`, используемая для быстрого перетаскивания представления: `scan('mark', x)` записывает *x* и текущее представление, а `scan('dragto', x)` корректирует представление относительно этой метки. Методы [`scan_mark()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox.scan_mark) и [`scan_dragto()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox.scan_dragto) оборачивают две формы.29812982#### `scan_mark(x)`29832984Записывает *x* и текущее представление в окне spinbox для последующего вызова [`scan_dragto()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox.scan_dragto). Обычно это связано с нажатием кнопки мыши на виджете.29852986#### `scan_dragto(x)`29872988Корректирует представление на величину, равную 10-кратной разности между *x* и *x*, переданным последнему вызову [`scan_mark()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox.scan_mark). Обычно это связано с событиями движения мыши, создавая эффект перетаскивания spinbox с высокой скоростью по окну.29892990#### `selection(*args)`29912992Тонкая обёртка вокруг подкоманды виджета Tk `selection`, используемая для настройки выделения внутри spinbox. Имеет несколько форм в зависимости от первого аргумента, такие как `selection('adjust', index)`, `selection('clear')`, `selection('element', ?elem?)`, `selection('from', index)`, `selection('present')`, `selection('range', start, end)` и `selection('to', index)`. Методы [`selection_adjust()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox.selection_adjust), [`selection_clear()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox.selection_clear), [`selection_element()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox.selection_element), [`selection_from()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox.selection_from), [`selection_present()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox.selection_present), [`selection_range()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox.selection_range) и [`selection_to()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox.selection_to) оборачивают эти формы.29932994#### `selection_adjust(index)`29952996Находит конец выделения, ближайший к символу, заданному *index*, и корректирует этот конец, чтобы он находился на *index* (включая *index*, но не выходя за него). Другой конец становится якорной точкой для будущих вызовов [`selection_to()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox.selection_to). Если выделение в данный момент отсутствует в spinbox, создаётся новое выделение, включающее символы между *index* и последней якорной точкой включительно.29972998#### `selection_clear()`29993000Очищает выделение, если оно находится в этом виджете. Если выделения нет в этом виджете, метод не даёт эффекта.30013002> **Примечание**3003>3004> Этот метод переопределяет унаследованный [`Misc.selection_clear()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.selection_clear), который очищает X-выделение; этот метод недоступен в `Spinbox`.30053006#### `selection_element(element=None)`30073008Устанавливает или возвращает текущий выбранный элемент. Если передан *элемент* (один из `'buttonup'`, `'buttondown'` или `'none'`), эта кнопка вращения выбирается и отображается нажатой; в противном случае возвращается имя текущего выбранного элемента.30093010#### `selection_from(index)`30113012Устанавливает якорную точку выделения непосредственно перед символом, заданным *index*, не изменяя само выделение.30133014Добавлено в версии 3.8.30153016#### `selection_present()`30173018Возвращает `True`, если в spinbox выбраны какие-либо символы, и `False` в противном случае.30193020Добавлено в версии 3.8.30213022#### `selection_range(start, end)`30233024Устанавливает выделение, включающее символы, начиная с символа с индексом *start* и заканчивая символом непосредственно перед *end*. Если *end* указывает на тот же символ, что и *start*, или на более ранний, выделение очищается.30253026Добавлено в версии 3.8.30273028#### `selection_to(index)`30293030Устанавливает выделение между *index* и якорной точкой. Если *index* находится до якорной точки, выделение идёт от *index* до якорной точки, не включая её; если после – выделение идёт от якорной точки до *index*, не включая его; если совпадает, ничего не происходит. Якорная точка задаётся последним вызовом [`selection_from()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox.selection_from) или [`selection_adjust()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox.selection_adjust). Если выделение отсутствует в этом виджете, создаётся новое выделение с использованием последней якорной точки.30313032Добавлено в версии 3.8.30333034#### `validate()`30353036Принудительно вычислить команду, заданную опцией *validatecommand*, независимо от условий, указанных опцией *validate*, и вернуть, является ли значение допустимым.30373038Добавлено в версии 3.16.0a0 (не выпущено).30393040#### `class tkinter.Text(master=None, cnf={}, **kw)`30413042Виджет `Text` отображает и редактирует многострочный текст. Части текста могут быть стилизованы с помощью **тегов**, отдельные позиции могут быть помечены плавающими **метками**, а в текст могут быть встроены произвольные изображения и другие виджеты. Виджет также предоставляет неограниченный механизм отмены/повтора и поддерживает равноправные виджеты (peer widgets), использующие те же базовые данные. Наследуется от [`Widget`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Widget), [`XView`](https://python-all.ru/3.16/library/tkinter.html#tkinter.XView) и [`YView`](https://python-all.ru/3.16/library/tkinter.html#tkinter.YView), поэтому представление можно прокручивать по горизонтали и вертикали с помощью [`xview()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.XView.xview) и [`yview()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.YView.yview). Полный список опций см. на странице руководства Tk `text`.30433044Большинство методов принимают один или несколько аргументов *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'`.30453046#### `insert(index, chars, *args)`30473048Вставляет строку *chars* непосредственно перед символом на *index* (если *index* равен `'end'`, то непосредственно перед последним символом новой строки). По умолчанию новый текст наследует любые теги, присутствующие с обеих сторон точки вставки. Если задан *args*, он состоит из чередующихся значений *tagList*, *chars*: предыдущий *chars* получает именно перечисленные теги (список тегов может быть именем одного тега или последовательностью имён), переопределяя окружающие теги.30493050#### `delete(index1, index2=None)`30513052Удаляет диапазон символов от *index1* включительно до *index2* не включительно. Если *index2* опущен, удаляется единственный символ в *index1*. Виджет всегда сохраняет символ новой строки в качестве последнего символа, поэтому удаление, которое могло бы его удалить, корректируется соответствующим образом.30533054#### `replace(index1, index2, chars, *args)`30553056Заменяет диапазон символов от *index1* включительно до *index2* не включительно на *chars*. Это эквивалентно [`delete()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text.delete), за которым следует [`insert()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text.insert) в позиции *index1*; *args* интерпретируется так же, как для `insert()`.30573058Добавлено в версии 3.3.30593060#### `get(index1, index2=None)`30613062Возвращает текст от *index1* до *index2* (не включая) в виде строки. Если *index2* опущен, возвращает единственный символ по индексу *index1*. Встроенные изображения и окна не включаются в результат.30633064#### `index(index)`30653066Возвращает позицию, соответствующую *index*, в канонической форме `'line.char'`.30673068#### `compare(index1, op, index2)`30693070Сравнивает позиции *index1* и *index2* с помощью оператора отношения *op*, который должен быть одним из `'<'`, `'<='`, `'=='`, `'>='`, `'>'` или `'!='`, и возвращает логический результат.30713072#### `count(index1, index2, *options, return_ints=False)`30733074Подсчитывает количество элементов запрошенных типов между *index1* и *index2*; результат отрицательный, если *index1* находится после *index2*. Каждый из *options* задаёт тип подсчитываемого элемента: `'chars'`, `'displaychars'`, `'displayindices'`, `'displaylines'`, `'indices'`, `'lines'`, `'xpixels'` или `'ypixels'` (по умолчанию, если ни один параметр не указан, используется `'indices'`). Псевдо-параметр `'update'` принудительно пересчитывает устаревшую информацию о расположении до обработки последующих параметров. Если *return\_ints* равен true и указан только один параметр подсчёта, возвращается простое целое число; в противном случае возвращается кортеж с одним целым числом для каждого параметра подсчёта (или `None`, если результат пуст).30753076Добавлено в версии 3.3.30773078Изменено в версии 3.13: Добавлен параметр *return\_ints*.30793080#### `see(index)`30813082Настраивает отображение так, чтобы символ, заданный *index*, был видимым. Если он уже видим, метод не производит никакого эффекта; если он находится на небольшом расстоянии за пределами видимости, виджет прокручивает ровно настолько, чтобы подвести его к ближайшему краю; в противном случае прокручивает так, чтобы *index* оказался в центре окна.30833084#### `bbox(index)`30853086Возвращает кортеж `(x, y, width, height)`, задающий ограничивающий прямоугольник (в пикселях) видимой части символа по индексу *index*, или `None`, если этот символ не видим на экране.30873088Этот метод переопределяет унаследованный `Misc.bbox()`; используйте [`grid_bbox()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grid_bbox) для получения ограничивающего прямоугольника в сетке.30893090#### `dlineinfo(index)`30913092Возвращает кортеж `(x, y, width, height, baseline)`, описывающий строку отображения, содержащую *index*: первые четыре значения задают ограничивающий прямоугольник строки в пикселях, а *baseline* задаёт смещение базовой линии вниз от верхней границы области. Возвращает `None`, если эта строка отображения не видна на экране.30933094#### `mark_set(markName, index)`30953096Устанавливает метку с именем *markName* в позицию непосредственно перед символом по индексу *index*, создавая метку, если её ещё не существует. Метка, созданная таким образом, по умолчанию имеет правую гравитацию.30973098#### `mark_unset(*markNames)`30993100Удаляет каждую из меток, имена которых указаны в *markNames*. Специальные метки `insert` и `current` не могут быть удалены.31013102#### `mark_names()`31033104Возвращает кортеж имён всех меток, установленных в данный момент в виджете.31053106#### `mark_gravity(markName, direction=None)`31073108Если *direction* опущен, возвращает гравитацию метки *markName*: либо `'left'`, либо `'right'`. В противном случае устанавливает её гравитацию равной *direction*. Гравитация определяет, с какой стороны от метки появляется текст, вставленный в позицию метки: метка с правой гравитацией (по умолчанию) остаётся справа от такого текста.31093110#### `mark_next(index)`31113112Возвращает имя первой метки, находящейся в позиции *index* или после неё, или `None`, если такой метки нет. Если *index* является именем метки, поиск начинается сразу после этой метки.31133114#### `mark_previous(index)`31153116Возвращает имя последней метки, находящейся в позиции *index* или перед ней, или `None`, если такой метки нет. Если *index* является именем метки, поиск начинается непосредственно перед этой меткой.31173118#### `tag_add(tagName, index1, *args)`31193120Добавляет тег *tagName* к диапазону символов от *index1* включительно до следующего индекса в *args* (не включая его). Дополнительные пары индексов можно передать в *args*, чтобы пометить ещё несколько диапазонов; одиночный индекс в конце помечает только символ по этому индексу.31213122#### `tag_remove(tagName, index1, index2=None)`31233124Удаляет тег *tagName* у символов от *index1* включительно до *index2* (не включая его) (или у одного символа по *index1*, если *index2* не указан). Сам тег продолжает существовать, даже если ни один символ его не содержит.31253126#### `tag_delete(*tagNames)`31273128Удаляет каждый из тегов, перечисленных в *tagNames*, убирая их со всех символов и отбрасывая их параметры и привязки.31293130#### `tag_configure(tagName, cnf=None, **kw)`31313132Запрашивает или изменяет параметры конфигурации тега *tagName*. Это отражает [`configure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.configure), за исключением того, что применяется к тегу, а не к виджету в целом: без параметров возвращает словарь, описывающий текущие параметры, иначе устанавливает переданные параметры. Определение тега таким образом также даёт ему приоритет выше, чем у любого существующего тега.31333134Поддерживаемые параметры тега, все управляющие внешним видом размеченного текста:31353136***font***31373138Шрифт, используемый для текста.31393140***foreground***31413142Цвет текста.31433144***background***31453146Цвет фона за текстом.31473148***fgstipple*, *bgstipple***31493150Растровые изображения для точечной заливки переднего плана (текста) и фона; хорошо поддерживаются только в X11.31513152***borderwidth***31533154Ширина границы, рисуемой вокруг текста в соответствии с *relief* (по умолчанию `0`).31553156***relief***31573158Трёхмерный вид границы текста: `'flat'` (по умолчанию), `'raised'`, `'sunken'`, `'ridge'`, `'groove'` или `'solid'`.31593160***offset***31613162Насколько текст поднимается над (или, если отрицательное, опускается под) базовую линию для верхних и нижних индексов.31633164***underline***31653166Указывает, подчёркивается ли текст.31673168***underlinefg***31693170Цвет подчёркивания; по умолчанию равен цвету текста.31713172***overstrike***31733174Указывает, рисуется ли линия через середину текста.31753176***overstrikefg***31773178Цвет линии зачёркивания; по умолчанию равен цвету текста.31793180***elide***31813182Скрыт ли текст.31833184***выравнивание***31853186Как выравнивать первый символ отображаемой строки: `'left'` (по умолчанию), `'right'` или `'center'`.31873188***перенос***31893190Как переносить слишком длинные строки: `'char'`, `'word'` или `'none'`.31913192***lmargin1*, *lmargin2***31933194Отступ в пикселях первой отображаемой строки логической строки и остальных отображаемых строк.31953196***lmargincolor***31973198Цвет левой области поля.31993200***rmargin***32013202Правое поле, в пикселях.32033204***rmargincolor***32053206Цвет правой области поля.32073208***spacing1*, *spacing2*, *spacing3***32093210Дополнительное пространство в пикселях над первой отображаемой строкой логической строки, между её отображаемыми строками и под её последней отображаемой строкой.32113212***tabs***32133214Набор позиций табуляции в той же форме, что и опция *tabs* виджета.32153216***tabstyle***32173218Как интерпретируются позиции табуляции: `'tabular'` или `'wordprocessor'`.32193220***selectbackground*, *selectforeground***32213222Цвет фона и текста, используемые для текста, когда он выделен.32233224> **Примечание**3225>3226> Tk 8.6 добавил опции *lmargincolor*, *overstrikefg*, *rmargincolor*, *selectbackground*, *selectforeground* и *underlinefg*.32273228[`tag_config()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text.tag_config) является псевдонимом `tag_configure()`.32293230#### `tag_cget(tagName, option)`32313232Возвращает текущее значение опции конфигурации *option* для тега *tagName*.32333234#### `tag_names(index=None)`32353236Если *index* опущен, возвращает кортеж имён всех тегов, определённых в виджете; в противном случае возвращает только имена тегов, применённых к символу по *index*. Имена упорядочены от наименьшего приоритета к наибольшему.32373238#### `tag_ranges(tagName)`32393240Возвращает кортеж индексов, описывающих все диапазоны текста, помеченные тегом *tagName*. Результат чередует начальные и конечные индексы, так что элементы `2*i` и `2*i+1` ограничивают *i*-й диапазон.32413242#### `tag_nextrange(tagName, index1, index2=None)`32433244Ищет от *index1* (до *index2*, если задан) первый диапазон символов, помеченный тегом *tagName*, и возвращает кортеж из двух элементов с начальным и конечным индексами, или пустой кортеж, если такого диапазона нет.32453246#### `tag_prevrange(tagName, index1, index2=None)`32473248Ищет назад от *index1* (до *index2*, если задан) ближайший предшествующий диапазон символов, помеченный тегом *tagName*, и возвращает кортеж из двух элементов с начальным и конечным индексами, или пустой кортеж, если такого диапазона нет.32493250#### `tag_raise(tagName, aboveThis=None)`32513252Повышает приоритет тега *tagName* так, чтобы он был сразу над приоритетом *aboveThis*, или до наивысшего приоритета среди всех тегов, если *aboveThis* не указан. Если параметры отображения перекрывающихся тегов конфликтуют, побеждает тег с более высоким приоритетом.32533254#### `tag_lower(tagName, belowThis=None)`32553256Понижает приоритет тега *tagName* так, чтобы он был сразу под приоритетом *belowThis*, или до наинизшего приоритета среди всех тегов, если *belowThis* не указан.32573258#### `tag_bind(tagName, sequence, func, add=None)`32593260Привязывает событие *sequence* для символов, помеченных тегом *tagName*, к колбэку *func*, так что *func* вызывается, когда это событие происходит над таким символом. Если *add* равен true, привязка добавляется вместе с любыми существующими привязками для *sequence*; в противном случае она заменяет их. Работает как [`bind()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.bind) и возвращает идентификатор новой привязки.32613262#### `tag_unbind(tagName, sequence, funcid=None)`32633264Удаляет привязки события *sequence* для символов, помеченных *tagName*. Если указан *funcid*, удаляется только та привязка (возвращённая [`tag_bind()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text.tag_bind)) и её колбэк отменяется.32653266Изменено в версии 3.13: Если указан *funcid*, отвязывается только этот колбэк.32673268#### `image_create(index, cnf={}, **kw)`32693270Встраивает изображение в позиции *index* и возвращает имя, назначенное этому экземпляру изображения, которое затем можно использовать как индекс или передавать другим методам `image_*`. Параметры, задаваемые в *cnf* и *kw*, включают *image* (изображение Tk для отображения), *name* (базовое имя экземпляра), *align*, *padx* и *pady*.32713272#### `image_cget(index, option)`32733274Возвращает текущее значение параметра конфигурации *option* для встроенного изображения в позиции *index*.32753276#### `image_configure(index, cnf=None, **kw)`32773278Запрашивает или изменяет параметры конфигурации встроенного изображения в позиции *index*, как [`configure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.configure), но применяется к этому изображению.32793280#### `image_names()`32813282Возвращает кортеж имён всех изображений, встроенных в виджет.32833284> **Примечание**3285>3286> Этот метод переопределяет унаследованный [`Misc.image_names()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.image_names), который возвращает имена всех изображений в интерпретаторе Tcl; этот метод недоступен для `Text`.32873288#### `window_create(index, cnf={}, **kw)`32893290Встраивает окно (любой виджет) в позиции *index*. Параметры, задаваемые в *cnf* и *kw*, включают *window* (виджет для встраивания), *create* (колбэк, создающий виджет по требованию), *align*, *stretch*, *padx* и *pady*. Встраиваемый виджет должен быть потомком родителя текстового виджета.32913292#### `window_cget(index, option)`32933294Возвращает текущее значение параметра конфигурации *option* для встроенного окна в позиции *index*.32953296#### `window_configure(index, cnf=None, **kw)`32973298Запрашивает или изменяет параметры конфигурации встроенного окна в позиции *index*, как [`configure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.configure), но применяется к этому окну.32993300[`window_config()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text.window_config) является псевдонимом `window_configure()`.33013302#### `window_names()`33033304Возвращает кортеж имён всех окон, встроенных в виджет.33053306#### `edit(*args)`33073308Низкоуровневая обёртка над виджет-командой Tk `edit`, управляющей механизмом undo/redo и флагом изменений; *args* – это подкоманда `edit` и её аргументы. Методы `edit_*()` ниже являются тонкими обёртками над ним и обычно более удобны.33093310#### `edit_modified(arg=None)`33113312Если *arg* опущен, возвращает текущее состояние флага изменений как `0` или `1`; флаг устанавливается автоматически при любой вставке или удалении текста. В противном случае устанавливает флаг в булево значение *arg*.33133314#### `edit_canundo()`33153316Возвращает `True`, если в стеке отмены есть действие, которое можно отменить, и `False` в противном случае.33173318Добавлено в версии 3.16.0a0 (не выпущено).33193320#### `edit_canredo()`33213322Возвращает `True`, если в стеке повтора есть действие, которое можно применить повторно, и `False` в противном случае.33233324Добавлено в версии 3.16.0a0 (не выпущено).33253326#### `edit_undo()`33273328Отменяет последнее действие редактирования, то есть все вставки и удаления, записанные в стек отмены после предыдущего разделителя, и переносит его в стек повтора. Вызывает [`TclError`](https://python-all.ru/3.16/library/tkinter.html#tkinter.TclError), если стек отмены пуст. Не действует, если параметр *undo* не равен true. Начиная с Tk 9.0, возвращает кортеж индексов, ограничивающих диапазоны текста, которые были изменены.33293330#### `edit_redo()`33313332Повторно применяет последнее отменённое действие редактирования, при условии, что после этого не было внесено изменений, и переносит его обратно в стек отмены. Вызывает [`TclError`](https://python-all.ru/3.16/library/tkinter.html#tkinter.TclError), если стек повтора пуст. Не действует, если параметр *undo* не равен true. Начиная с Tk 9.0, возвращает кортеж индексов, ограничивающих диапазоны текста, которые были изменены.33333334#### `edit_reset()`33353336Очищает стеки отмены и повтора.33373338#### `edit_separator()`33393340Добавляет разделитель в стек отмены, обозначая границу между действиями редактирования для отмены и повтора. Не действует, если параметр *undo* не равен true. Разделители вставляются автоматически, если параметр *autoseparators* равен true.33413342#### `search(pattern, index, stopindex=None, forwards=None, backwards=None, exact=None, regexp=None, nocase=None, count=None, elide=None, *, nolinestop=None, strictlimits=None)`33433344Ищет *pattern* начиная с *index* и возвращает индекс первого символа первого совпадения или пустую строку, если совпадений нет. Поиск останавливается на *stopindex*, если он указан; в противном случае он переходит через концы текста, пока снова не достигнет начальной позиции. Следующие логические флаги управляют поиском: *forwards* или *backwards* выбирают направление (прямой поиск по умолчанию); *exact* (по умолчанию) или *regexp* выбирают точное совпадение или совпадение с регулярным выражением; *nocase* делает поиск нечувствительным к регистру; *elide* позволяет искать скрытый текст; *nolinestop* (только для regexp) позволяет `.` и `[^` совпадать с символами новой строки; а *strictlimits* требует, чтобы всё совпадение находилось в пределах *index* и *stopindex*. Если *count* является [`Variable`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable), в него сохраняется количество позиций индекса в совпадении.33453346Изменено в версии 3.15: Добавлены параметры *nolinestop* и *strictlimits*.33473348#### `search_all(pattern, index, stopindex=None, *, forwards=None, backwards=None, exact=None, regexp=None, nocase=None, count=None, elide=None, nolinestop=None, overlap=None, strictlimits=None)`33493350Как [`search()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text.search), но находит все совпадения в заданном диапазоне и возвращает кортеж начальных индексов всех совпадений (пустой, если их нет). По умолчанию перекрывающиеся совпадения не сообщаются; передача истинного *overlap* возвращает каждое совпадение, которое не полностью содержится в другом. Если *count* является [`Variable`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable), он получает список по одному элементу на каждое совпадение.33513352Добавлено в версии 3.15.33533354#### `scan_mark(x, y)`33553356Запоминает *x*, *y* и текущий вид для использования в последующих вызовах [`scan_dragto()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text.scan_dragto). Обычно привязывается к нажатию кнопки мыши в виджете.33573358#### `scan_dragto(x, y)`33593360Прокручивает виджет на разницу в 10 раз между *x*, *y* и координатами, переданными последнему вызову [`scan_mark()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text.scan_mark). Обычно привязывается к событиям движения мыши, создавая эффект перетаскивания текста на высокой скорости по окну.33613362#### `debug(boolean=None)`33633364Если *boolean* опущен, возвращает, включены ли проверки внутренней целостности B-дерева. В противном случае включает или отключает их. Эта настройка общая для всех текстовых виджетов и может заметно замедлить виджеты, содержащие большие объёмы текста.33653366#### `dump(index1, index2=None, command=None, **kw)`33673368Возвращает содержимое виджета от *index1* включительно до *index2* не включительно (или только сегмент на *index1*, если *index2* опущен), включая текст и информацию о метках, тегах, изображениях и окнах. Результат – список троек `(key, value, index)`, где *key* – одно из значений `'text'`, `'mark'`, `'tagon'`, `'tagoff'`, `'image'` или `'window'`. По умолчанию сообщаются все типы; передача любого из ключевых аргументов *all*, *text*, *mark*, *tag*, *image* или *window* со значением true ограничивает дамп выбранными типами. Если передан *command*, он вызывается один раз на каждую тройку с тремя значениями в качестве аргументов, и ничего не возвращается.33693370#### `peer_create(newPathName, cnf={}, **kw)`33713372Создаёт равноправный текстовый виджет с путём *newPathName*, который разделяет базовые данные этого виджета (текст, метки, теги, изображения и стек отмены). Изменения, сделанные через любой из равноправных виджетов, отражаются во всех них. По умолчанию равноправный виджет охватывает те же строки, что и данный виджет; могут быть заданы стандартные текстовые параметры, включая *startline* и *endline*, чтобы переопределить это.33733374Добавлено в версии 3.3.33753376#### `peer_names()`33773378Возвращает кортеж путей равноправных виджетов этого виджета, не включая сам виджет.33793380Добавлено в версии 3.3.33813382#### `sync(command=None)`33833384Управляет синхронизацией отображаемого вида с базовым текстом, которая может отставать, когда высота строк ещё не вычислена (например, для строк, которые никогда не отображались). Если *command* опущен, немедленно приводит метрики строк в актуальное состояние, принудительно вычисляя любые устаревшие высоты строк, и возвращает результат, как только они станут актуальными. В противном случае планирует вызов *command* без аргументов ровно один раз, как только все высоты строк будут актуальны; если нет ожидающих вычислений, он вызывается немедленно.33853386Добавлено в версии 3.16.0a0 (не выпущено).33873388#### `pendingsync()`33893390Возвращает `True`, если вычисления высоты строк не актуальны, и `False` в противном случае. Виртуальное событие `<<WidgetViewSync>>` срабатывает при каждом изменении этого состояния, с полем *detail*, установленным в новое значение.33913392Добавлено в версии 3.16.0a0 (не выпущено).33933394#### `yview_pickplace(*what)`33953396Настраивает вид так, чтобы местоположение, заданное *what*, стало видимым. Это устаревший эквивалент [`see()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text.see), который следует использовать вместо него.33973398### Классы переменных33993400#### `class tkinter.Variable(master=None, value=None, name=None)`34013402Базовый класс для обёрток переменных Tk. Переменная Tk – это значение, хранящееся в интерпретаторе Tcl, которое может быть связано с виджетами через их параметры *variable* или *textvariable* (см. [Связывание переменных виджетов](https://python-all.ru/3.16/library/tkinter.html#coupling-widget-variables)), так что изменения распространяются в обоих направлениях: обновление переменной обновляет все виджеты, привязанные к ней, а редактирование такого виджета пользователем обновляет переменную.34033404*master* – это виджет, интерпретатору Tcl которого принадлежит переменная; если опущен, используется корневое окно по умолчанию. *value* – начальное значение; если опущено, используется значение по умолчанию для данного типа. *name* – имя переменной в интерпретаторе Tcl; если опущено, генерируется уникальное имя вида `'PY_VARnum'`. Если *name* совпадает с существующей переменной, а *value* опущено, существующее значение сохраняется.34053406В большинстве случаев следует использовать один из типизированных подклассов ниже – [`StringVar`](https://python-all.ru/3.16/library/tkinter.html#tkinter.StringVar), [`IntVar`](https://python-all.ru/3.16/library/tkinter.html#tkinter.IntVar), [`DoubleVar`](https://python-all.ru/3.16/library/tkinter.html#tkinter.DoubleVar) или [`BooleanVar`](https://python-all.ru/3.16/library/tkinter.html#tkinter.BooleanVar) – вместо `Variable` напрямую.34073408> **Примечание**3409>3410> Когда `Variable` удаляется сборщиком мусора, его переменная Tcl сбрасывается. Сохраняйте ссылку на неё до тех пор, пока виджет связан с ней, например, храня её как атрибут, а не в локальной переменной. В противном случае Tk воссоздаёт переменную Tcl для поддержания работы виджета, но она больше никогда не сбрасывается, что приводит к утечке одной переменной Tcl на каждую отброшенную обёртку.34113412Изменено в версии 3.10: Теперь две переменные сравниваются равными (`==`), только если они имеют одинаковое имя, принадлежат одному классу и одному интерпретатору Tcl.34133414#### `get()`34153416Возвращает текущее значение переменной. Для базового класса значение возвращается в виде строки; типизированные подклассы преобразуют его в соответствующий тип Python.34173418#### `set(value)`34193420Устанавливает переменную в *value*. [`initialize()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable.initialize) – это псевдоним `set()`.34213422Добавлено в версии 3.3: Написание *initialize*.34233424#### `trace_add(mode, callback)`34253426Регистрирует *колбэк*, который вызывается при доступе к переменной в соответствии с *mode*. *mode* – одна из строк `'array'`, `'read'`, `'write'` или `'unset'`, либо список или кортеж таких строк.34273428При срабатывании *колбэк* вызывается с тремя аргументами: имя переменной Tcl, индекс (или пустая строка, если переменная не является элементом массива) и *mode*, вызвавший срабатывание.34293430Возвращает внутреннее имя зарегистрированного колбэка, которое можно передать в [`trace_remove()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable.trace_remove).34313432Добавлено в версии 3.6.34333434#### `trace_remove(mode, cbname)`34353436Удаляет колбэк трассировки из переменной. *mode* должен совпадать с *mode*, переданным в [`trace_add()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable.trace_add), а *cbname* – это имя колбэка, возвращённое `trace_add()`.34373438Добавлено в версии 3.6.34393440#### `trace_info()`34413442Возвращает список пар `(modes, cbname)`, описывающих все трассировки, установленные на переменной, где *modes* – кортеж строк режимов, а *cbname* – внутреннее имя колбэка.34433444Добавлено в версии 3.6.34453446#### `trace_variable(mode, callback)`34473448Регистрирует *колбэк*, который вызывается при доступе к переменной в соответствии с *mode*. *mode* – одна из строк `'r'`, `'w'` или `'u'` для чтения, записи или удаления. Возвращает внутреннее имя зарегистрированного колбэка. [`trace()`](https://python-all.ru/3.16/library/trace.html#module-trace) – это псевдоним `trace_variable()`.34493450Устарело с версии 3.6: Вместо этого используйте [`trace_add()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable.trace_add). Этот метод оборачивает возможность Tcl, которая была удалена в Tcl 9.0.34513452#### `trace_vdelete(mode, cbname)`34533454Удаляет колбэк трассировки с именем *cbname*, зарегистрированный для *mode* с помощью [`trace_variable()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable.trace_variable).34553456Устарело с версии 3.6: Вместо этого используйте [`trace_remove()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable.trace_remove). Этот метод оборачивает возможность Tcl, которая была удалена в Tcl 9.0.34573458#### `trace_vinfo()`34593460Возвращает список пар `(mode, cbname)` для всех трассировок, установленных на переменной с помощью [`trace_variable()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable.trace_variable).34613462Устарело с версии 3.6: Вместо этого используйте [`trace_info()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable.trace_info). Этот метод оборачивает возможность Tcl, которая была удалена в Tcl 9.0.34633464#### `class tkinter.StringVar(master=None, value=None, name=None)`34653466Подкласс [`Variable`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable), хранящий строку. Значение по умолчанию – `''`.34673468#### `get()`34693470Возвращает значение переменной в виде [`str`](https://python-all.ru/3.16/library/stdtypes.html#str).34713472#### `class tkinter.IntVar(master=None, value=None, name=None)`34733474Подкласс [`Variable`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable), хранящий целое число. Значение по умолчанию – `0`.34753476#### `get()`34773478Возвращает значение переменной в виде [`int`](https://python-all.ru/3.16/library/functions.html#int).34793480#### `class tkinter.DoubleVar(master=None, value=None, name=None)`34813482Подкласс [`Variable`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable), хранящий число с плавающей точкой. Значение по умолчанию – `0.0`.34833484#### `get()`34853486Возвращает значение переменной в виде [`float`](https://python-all.ru/3.16/library/functions.html#float).34873488> **Примечание**3489>3490> Значение с плавающей точкой всегда разбирается с точкой (`.`) в качестве десятичного разделителя, но [`Spinbox`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Spinbox), [`Scale`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Scale) и [`ttk.Spinbox`](https://python-all.ru/3.16/library/tkinter.ttk.html#tkinter.ttk.Spinbox) форматируют его в соответствии с локалью `LC_NUMERIC`. В локали, использующей запятую, они выдают значение, которое [`get()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.DoubleVar.get) не может прочитать, вызывая [`TclError`](https://python-all.ru/3.16/library/tkinter.html#tkinter.TclError). Установите `LC_NUMERIC` на локаль, использующую точку (например, `'C'`), чтобы избежать этого.34913492#### `class tkinter.BooleanVar(master=None, value=None, name=None)`34933494Подкласс [`Variable`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Variable), который хранит булево значение. Значение по умолчанию – `False`.34953496#### `get()`34973498Возвращает значение переменной как [`bool`](https://python-all.ru/3.16/library/functions.html#bool). Вызывает [`ValueError`](https://python-all.ru/3.16/library/exceptions.html#ValueError), если значение не может быть интерпретировано как булево.34993500#### `set(value)`35013502Устанавливает переменную в *value*, преобразуя его в булево значение. [`initialize()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.BooleanVar.initialize) – псевдоним `set()`.35033504Добавлено в версии 3.3: Написание *initialize*.35053506### Классы изображений35073508#### `class tkinter.Image(imgtype, name=None, cnf={}, master=None, **kw)`35093510Базовый класс для изображений Tk. *imgtype* – это тип изображения Tk, один из `'photo'` или `'bitmap'`. Изображение – именованный объект, который может отображаться виджетами через их опцию *image*; удаление всех ссылок на объект `Image` удаляет базовое изображение Tk. Обычно создают [`PhotoImage`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PhotoImage) или [`BitmapImage`](https://python-all.ru/3.16/library/tkinter.html#tkinter.BitmapImage), а не напрямую `Image`.35113512Параметры конфигурации изображения задаются *cnf* и *kw* и могут быть запрошены и изменены позднее с помощью протокола отображения (используя `image[key]`) или метода [`configure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Image.configure).35133514#### `configure(**kw)`35153516Изменяет один или несколько параметров конфигурации изображения. Допустимые параметры зависят от типа изображения; см. [`PhotoImage`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PhotoImage) и [`BitmapImage`](https://python-all.ru/3.16/library/tkinter.html#tkinter.BitmapImage). [`config()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Image.config) – псевдоним `configure()`.35173518#### `height()`35193520Возвращает высоту изображения в пикселях.35213522#### `width()`35233524Возвращает ширину изображения в пикселях.35253526#### `type()`35273528Возвращает тип изображения, то есть значение *imgtype*, с которым оно было создано (например, `'photo'` или `'bitmap'`).35293530#### `class tkinter.PhotoImage(name=None, cnf={}, master=None, **kw)`35313532Полноцветное изображение (тип изображения Tk `photo`), хранящееся внутри с различной степенью прозрачности для каждого пикселя. Может читать и записывать файлы GIF, PPM/PGM и (в Tk 8.6 и новее) PNG, читать файлы SVG (в Tk 9.0 и новее) и отображаться в виджетах. Наследует от [`Image`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Image).35333534Параметры конфигурации включают *data* (содержимое изображения в виде строки), *file* (имя файла для чтения содержимого), *format* (имя обработчика формата файла), *width* и *height* (размер изображения, используется при построении по частям), *gamma* и *palette*.35353536#### `blank()`35373538Очищает изображение; то есть устанавливает всё изображение без данных, так что оно отображается прозрачным, и фон окна, в котором оно отображается, просвечивает.35393540#### `redither()`35413542Пересчитать дизеризированное изображение в каждом окне, где оно отображается. Это полезно, когда данные изображения были предоставлены частями; в таком случае дизеризированное изображение может быть не совсем точным.35433544Добавлено в версии 3.16.0a0 (не выпущено).35453546#### `cget(option)`35473548Возвращает текущее значение параметра конфигурации *option*.35493550#### `copy(*, from_coords=None, zoom=None, subsample=None)`35513552Возвращает новый `PhotoImage` с копией этого изображения.35533554*from\_coords* задаёт прямоугольную подобласть исходного изображения для копирования. Она должна быть кортежем или списком из 1–4 целых чисел `(x1, y1, x2, y2)`. `(x1, y1)` и `(x2, y2)` задают диагонально противоположные углы прямоугольника. Если *x2* и *y2* не указаны, они по умолчанию равны правому нижнему углу исходного изображения. Копируемые пиксели включают левый и верхний края прямоугольника, но не нижний или правый. Если *from\_coords* не задан, копируется всё исходное изображение.35553556Если указаны *zoom* или *subsample*, изображение преобразуется как в методах [`zoom()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PhotoImage.zoom) и [`subsample()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PhotoImage.subsample). Значением должно быть одно целое число или пара целых чисел.35573558Изменено в версии 3.13: Добавлены параметры *from\_coords*, *zoom* и *subsample*.35593560#### `copy_replace(sourceImage, *, from_coords=None, to=None, shrink=False, zoom=None, subsample=None, compositingrule=None)`35613562Копирует область из *sourceImage* (который должен быть `PhotoImage`) в это изображение, возможно с масштабированием пикселей и/или субдискретизацией. Если параметры не указаны, *sourceImage* копируется целиком в это изображение, начиная с координат `(0, 0)`.35633564Параметр *from\_coords* задаёт прямоугольную подобласть исходного изображения, которая будет скопирована, как в методе [`copy()`](https://python-all.ru/3.16/library/copy.html#module-copy).35653566*to* задаёт прямоугольную подобласть целевого изображения, которая будет затронута. Это должен быть кортеж или список из 1–4 целых чисел `(x1, y1, x2, y2)`. Если *x2* и *y2* не указаны, по умолчанию они равны `(x1, y1)` плюс размер исходной области (после субдискретизации и масштабирования, если они заданы). Если *x2* и *y2* указаны, исходная область при необходимости дублируется мозаичным способом для заполнения целевой области.35673568Если *shrink* истинно, размер целевого изображения при необходимости уменьшается так, чтобы копируемая область оказалась в правом нижнем углу изображения.35693570Если указаны *zoom* или *subsample*, изображение преобразуется как в методах [`zoom()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PhotoImage.zoom) и [`subsample()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PhotoImage.subsample). Значением должно быть одно целое число или пара целых чисел.35713572*compositingrule* определяет, как прозрачные пиксели исходного изображения объединяются с целевым изображением. При `'overlay'` (по умолчанию) старое содержимое целевого изображения остаётся видимым, как если бы исходное изображение было напечатано на прозрачной плёнке и наложено поверх целевого. При `'set'` старое содержимое целевого изображения отбрасывается, а исходное изображение используется как есть.35733574Добавлено в версии 3.13.35753576#### `data(format=None, *, from_coords=None, background=None, grayscale=False, metadata=None)`35773578Возвращает данные изображения.35793580*format* задаёт имя обработчика формата файла изображения. Если он не указан, данные возвращаются в виде кортежа (по одному элементу на строку) строк, содержащих разделённые пробелами (по одному элементу на пиксель/столбец) цвета в формате `#RRGGBB`.35813582*from\_coords* задаёт прямоугольную область изображения, которую нужно вернуть. Это должен быть кортеж или список из 1–4 целых чисел `(x1, y1, x2, y2)`. Если указаны только *x1* и *y1*, область простирается от `(x1, y1)` до правого нижнего угла изображения. Если заданы все четыре координаты, они определяют противоположные углы области по диагонали, включая `(x1, y1)` и исключая `(x2, y2)`. Если *from\_coords* не задан, возвращается всё изображение.35833584Если указан *background*, данные не содержат информации о прозрачности; во всех прозрачных пикселях цвет заменяется на указанный.35853586Если *grayscale* равен true, данные не содержат информации о цвете; все данные пикселей преобразуются в оттенки серого.35873588*metadata* – это словарь, передаваемый драйверу формата изображения. Требуется Tcl/Tk версии 9.0 или новее.35893590Добавлено в версии 3.13.35913592Изменено в версии 3.16.0a0 (не выпущена): Добавлен параметр *metadata*.35933594#### `get(x, y, *, withalpha=False)`35953596Возвращает цвет пикселя с координатами (*x*, *y*) в виде `(r, g, b)` кортежа из трёх целых чисел от 0 до 255, представляющих красный, зелёный и синий компоненты соответственно. Если *withalpha* равен true, возвращаемый кортеж содержит четвёртый элемент – значение альфа-канала (прозрачности) пикселя.35973598Изменено в версии 3.16.0a0 (не выпущена): Добавлен параметр *withalpha*, для которого требуется Tcl/Tk 9.0 или новее.35993600#### `put(data, to=None, *, format=None, metadata=None)`36013602Устанавливает пиксели изображения в цвета, заданные в *data*, который должен быть строкой или вложенной последовательностью горизонтальных строк цветов пикселей (например, `"{red green} {blue yellow}"`).36033604*to* задаёт координаты области изображения, в которую копируются данные. Это должен быть кортеж или список из 2 или 4 целых чисел `(x1, y1)` или `(x1, y1, x2, y2)`, задающих левый верхний угол и, опционально, правый нижний угол области. Положение по умолчанию – `(0, 0)`.36053606Параметр *format* определяет формат изображения *data*, так что используются только те обработчики форматов файлов изображений, чьи имена начинаются с него.36073608Параметр *metadata* – это словарь, передаваемый драйверу формата изображения. Для него требуется Tcl/Tk 9.0 или новее.36093610Изменено в версии 3.16.0a0 (не выпущена): Добавлены параметры *format* и *metadata*.36113612#### `read(filename, format=None, *, from_coords=None, to=None, shrink=False, metadata=None)`36133614Читает данные изображения из файла с именем *filename* в изображение.36153616*format* задаёт формат данных изображения в файле.36173618Параметр *metadata* – это словарь, передаваемый драйверу формата изображения. Для него требуется Tcl/Tk 9.0 или новее.36193620*from\_coords* задаёт прямоугольную подобласть данных изображения из файла, которая будет скопирована в целевое изображение. Это должен быть кортеж или список из 1–4 целых чисел `(x1, y1, x2, y2)`. Если указаны только *x1* и *y1*, область простирается от `(x1, y1)` до правого нижнего угла изображения в файле. Если заданы все четыре координаты, они определяют противоположные углы области по диагонали. Если *from\_coords* не задан, читается всё изображение из файла.36213622*to* задаёт координаты левого верхнего угла области изображения, в которую читаются данные. По умолчанию – `(0, 0)`.36233624Если *shrink* истинно, размер изображения при необходимости уменьшается так, чтобы область, в которую читаются данные из файла, оказалась в правом нижнем углу изображения.36253626Добавлено в версии 3.13.36273628Изменено в версии 3.16.0a0 (не выпущена): Добавлен параметр *metadata*.36293630#### `subsample(x, y='', *, from_coords=None)`36313632Возвращает новый `PhotoImage` на основе данного изображения, но использующий только каждый *x*-й пиксель по оси X и каждый *y*-й пиксель по оси Y. Если *y* не указан, по умолчанию он равен *x*.36333634Параметр *from\_coords* задаёт прямоугольную подобласть исходного изображения, которая будет скопирована, как в методе [`copy()`](https://python-all.ru/3.16/library/copy.html#module-copy).36353636Изменено в версии 3.13: Добавлен параметр *from\_coords*.36373638#### `transparency_get(x, y)`36393640Возвращает `True`, если пиксель по координатам (*x*, *y*) полностью прозрачен, иначе `False`.36413642Добавлено в версии 3.8.36433644#### `transparency_set(x, y, boolean)`36453646Делает пиксель по координатам (*x*, *y*) полностью прозрачным, если *boolean* истинно, и полностью непрозрачным в противном случае.36473648Добавлено в версии 3.8.36493650#### `write(filename, format=None, from_coords=None, *, background=None, grayscale=False, metadata=None)`36513652Записывает данные изображения из изображения в файл с именем *filename*.36533654Параметр *format* задаёт имя обработчика формата файла изображения. Если он не указан, формат определяется по расширению файла.36553656Параметр *from\_coords* задаёт прямоугольную область изображения, которую нужно записать. Он должен быть кортежем или списком из 1–4 целых чисел `(x1, y1, x2, y2)`. Если указаны только *x1* и *y1*, область простирается от `(x1, y1)` до правого нижнего угла изображения. Если заданы все четыре координаты, они задают диагонально противоположные углы области. Если *from\_coords* не указан, записывается всё изображение.36573658Если указан *background*, данные не содержат информации о прозрачности; во всех прозрачных пикселях цвет заменяется на указанный.36593660Если *grayscale* равен true, данные не содержат информации о цвете; все данные пикселей преобразуются в оттенки серого.36613662Параметр *metadata* – это словарь, передаваемый драйверу формата изображения. Для него требуется Tcl/Tk 9.0 или новее.36633664Изменено в версии 3.13: Добавлены параметры *background* и *grayscale*.36653666Изменено в версии 3.16.0a0 (не выпущена): Добавлен параметр *metadata*.36673668#### `zoom(x, y='', *, from_coords=None)`36693670Возвращает новый `PhotoImage` с этим изображением, увеличенным в *x* раз по оси X и в *y* раз по оси Y. Если *y* не указан, по умолчанию используется то же значение, что и *x*.36713672Параметр *from\_coords* задаёт прямоугольную подобласть исходного изображения, которая будет скопирована, как в методе [`copy()`](https://python-all.ru/3.16/library/copy.html#module-copy).36733674Изменено в версии 3.13: Добавлен параметр *from\_coords*.36753676#### `class tkinter.BitmapImage(name=None, cnf={}, master=None, **kw)`36773678Двухцветное изображение (тип изображения Tk `bitmap`), созданное из X11-битовой карты. Каждый пиксель отображает цвет переднего плана, цвет фона или ничего (создавая эффект прозрачности). Наследует от [`Image`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Image).36793680Параметрами конфигурации являются *data* или *file* (исходная битовая карта, задаваемая строкой в формате X11 или именем файла в этом формате), *maskdata* или *maskfile* (маска битовой карты в тех же форматах), а также *foreground* и *background* (два цвета). Для пикселей, где маска равна нулю, изображение ничего не отображает; для остальных пикселей отображается цвет переднего плана, где исходный бит равен единице, и цвет фона, где он равен нулю. Если *background* установлен в пустую строку, фоновые пиксели становятся прозрачными.36813682`BitmapImage` не имеет собственных методов, кроме тех, что унаследованы от [`Image`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Image).36833684### Другие классы36853686#### `class tkinter.Event`36873688Контейнер для атрибутов события, передаваемого в колбэк, привязанный с помощью [`Misc.bind()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.bind). Экземпляр `Event` имеет следующие атрибуты, каждый из которых соответствует полю базового события Tk; в зависимости от типа события некоторые атрибуты могут быть установлены в строку `'??'`, чтобы указать, что они не имеют смысла. См. [Привязки и события](https://python-all.ru/3.16/library/tkinter.html#bindings-and-events).36893690#### `serial`36913692Серийный номер события.36933694#### `num`36953696Кнопка мыши, которая была нажата или отпущена (для событий кнопок).36973698#### `focus`36993700Указывает, имеет ли окно фокус (для событий `Enter` и `Leave`).37013702#### `height`37033704#### `width`37053706Новая высота и ширина окна (для событий `Configure` и `Expose`).37073708#### `keycode`37093710Код клавиши, которая была нажата или отпущена.37113712#### `state`37133714Состояние события в виде числа (для большинства событий) или строки (для событий `Visibility`).37153716#### `time`37173718Временная метка события в миллисекундах.37193720#### `x`37213722#### `y`37233724Положение указателя относительно виджета в пикселях.37253726#### `x_root`37273728#### `y_root`37293730Положение указателя относительно верхнего левого угла экрана, в пикселях.37313732#### `char`37333734Введённый символ в виде строки (для событий клавиш).37353736#### `send_event`37373738`True`, если событие было отправлено другим приложением.37393740#### `keysym`37413742Символическое имя клавиши, которая была нажата или отпущена.37433744#### `keysym_num`37453746Числовое значение [`keysym`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Event.keysym).37473748#### `type`37493750[`EventType`](https://python-all.ru/3.16/library/tkinter.html#tkinter.EventType) события.37513752#### `widget`37533754Виджет, на котором произошло событие.37553756#### `delta`37573758Величина, на которую было повёрнуто колесо мыши (для событий `MouseWheel`).37593760#### `user_data`37613762Строка данных виртуального события, передаваемая в опцию *data* функции [`Misc.event_generate()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.event_generate). Для невиртуальных событий она равна `'??'`.37633764Добавлено в версии 3.15.37653766#### `detail`37673768Фиксированная строка detail для событий `Enter`, `Leave`, `FocusIn`, `FocusOut` и `ConfigureRequest` (см. документацию Tcl/Tk). Для прочих событий она равна `'??'`.37693770Добавлено в версии 3.15.37713772#### `class tkinter.EventType(*values)`37733774Перечисление [`enum.StrEnum`](https://python-all.ru/3.16/library/enum.html#enum.StrEnum), содержащее типы событий Tk, используемое в качестве значения [`Event.type`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Event.type). Его члены включают, среди прочего, `KeyPress`, `KeyRelease`, `ButtonPress`, `ButtonRelease`, `Motion`, `Enter`, `Leave`, `FocusIn`, `FocusOut`, `Configure`, `Map`, `Unmap`, `Expose`, `Destroy` и `MouseWheel`.37753776Добавлено в версии 3.6.37773778#### `class tkinter.CallWrapper(func, subst, widget)`37793780Внутренний вспомогательный класс, который оборачивает Python-колбэк, чтобы его можно было вызвать из Tcl. *func* – это Python-функция, *subst* – необязательная функция, которая предварительно обрабатывает аргументы Tcl, а *widget* – виджет, используемый для сообщения об ошибках. Экземпляры создаются автоматически с помощью [`Misc.register()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.register); этот класс обычно не используется напрямую.37813782### Функции уровня модуля37833784#### `tkinter.Tcl(screenName=None, baseName=None, className='Tk', useTk=False)`37853786Функция `Tcl()` – это фабричная функция, которая создаёт объект, очень похожий на тот, что создаётся классом [`Tk`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Tk), за исключением того, что она не инициализирует подсистему Tk. Она чаще всего полезна при работе с интерпретатором Tcl в среде, где не требуется создавать лишние окна верхнего уровня или где это невозможно (например, в системах Unix/Linux без X-сервера). Объект, созданный объектом `Tcl()`, может иметь окно Toplevel (и инициализированную подсистему Tk) при вызове его метода [`loadtk()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Tk.loadtk).37873788#### `tkinter.NoDefaultRoot()`37893790Подавляет создание неявного корневого окна по умолчанию. После этого `tkinter` больше не создаёт автоматически общий корневой элемент, а операции, которые от него зависят – например, создание виджета без явного *master* – вызывают исключение [`RuntimeError`](https://python-all.ru/3.16/library/exceptions.html#RuntimeError). Вызывайте эту функцию на раннем этапе в крупных приложениях, чтобы сделать корневое окно явным.37913792#### `tkinter.mainloop(n=0)`37933794Запускает главный цикл событий Tk на корневом окне по умолчанию, пока все окна не будут уничтожены. Эквивалентно вызову [`Misc.mainloop()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.mainloop) для корневого окна по умолчанию.37953796#### `tkinter.getboolean(s)`37973798Преобразует Tcl-строку логического типа *s* (одно из значений `'1'`, `'true'`, `'yes'`, `'on'` и подобных, или их ложные аналоги) в Python-объект [`bool`](https://python-all.ru/3.16/library/functions.html#bool). Вызывает [`TclError`](https://python-all.ru/3.16/library/tkinter.html#tkinter.TclError) для недопустимого значения.37993800#### `tkinter.getdouble(s)`38013802Преобразует *s* в число с плавающей запятой. Это встроенная функция [`float`](https://python-all.ru/3.16/library/functions.html#float).38033804#### `tkinter.getint(s)`38053806Преобразует *s* в целое число. Это встроенная функция [`int`](https://python-all.ru/3.16/library/functions.html#int).38073808#### `tkinter.image_names()`38093810Возвращает имена всех существующих изображений в интерпретаторе корневого окна по умолчанию.38113812#### `tkinter.image_types()`38133814Возвращает доступные типы изображений (например, `'photo'` и `'bitmap'`) в интерпретаторе корневого окна по умолчанию.38153816### Обработчики файлов38173818Tk позволяет регистрировать и удалять функцию обратного вызова, которая будет вызываться из главного цикла Tk, когда возможен ввод-вывод на файловом дескрипторе. Для каждого файлового дескриптора можно зарегистрировать только один обработчик. Пример кода:38193820```python3821import tkinter3822widget = tkinter.Tk()3823mask = tkinter.READABLE | tkinter.WRITABLE3824widget.tk.createfilehandler(file, mask, callback)3825...3826widget.tk.deletefilehandler(file)3827```38283829Эта функция недоступна в Windows.38303831Поскольку неизвестно, сколько байт доступно для чтения, не рекомендуется использовать методы [`BufferedIOBase`](https://python-all.ru/3.16/library/io.html#io.BufferedIOBase) или [`TextIOBase`](https://python-all.ru/3.16/library/io.html#io.TextIOBase) [`read()`](https://python-all.ru/3.16/library/io.html#io.BufferedIOBase.read) или [`readline()`](https://python-all.ru/3.16/library/io.html#io.IOBase.readline), так как они будут читать строго заданное количество байт. Для сокетов подойдут методы [`recv()`](https://python-all.ru/3.16/library/socket.html#socket.socket.recv) или [`recvfrom()`](https://python-all.ru/3.16/library/socket.html#socket.socket.recvfrom); для других файлов используйте необработанное чтение или `os.read(file.fileno(), maxbytecount)`.38323833#### `Widget.tk.createfilehandler(file, mask, func)`38343835Регистрирует функцию обратного вызова обработчика файла *func*. Аргумент *file* может быть объектом с методом [`fileno()`](https://python-all.ru/3.16/library/io.html#io.IOBase.fileno) (например, файлом или сокетом), либо целочисленным файловым дескриптором. Аргумент *mask* представляет собой комбинацию (побитовое ИЛИ) любых из трёх констант ниже. Колбэк вызывается следующим образом:38363837```python3838callback(file, mask)3839```38403841#### `Widget.tk.deletefilehandler(file)`38423843Удаляет обработчик файла.38443845#### `tkinter.READABLE`38463847#### `tkinter.WRITABLE`38483849#### `tkinter.EXCEPTION`38503851Константы, используемые в аргументе *mask*.38523853### Константы38543855Следующие символьные константы доступны в пространствах имён `tkinter` и `tkinter.constants`.38563857#### `tkinter.TRUE`38583859#### `tkinter.YES`38603861#### `tkinter.ON`38623863Истинные значения, все равны целому числу `1`.38643865#### `tkinter.FALSE`38663867#### `tkinter.NO`38683869#### `tkinter.OFF`38703871Ложные значения, все равны целому числу `0`.38723873#### `tkinter.N`38743875#### `tkinter.S`38763877#### `tkinter.E`38783879#### `tkinter.W`38803881#### `tkinter.NE`38823883#### `tkinter.NW`38843885#### `tkinter.SE`38863887#### `tkinter.SW`38883889#### `tkinter.NS`38903891#### `tkinter.EW`38923893#### `tkinter.NSEW`38943895#### `tkinter.CENTER`38963897Направления компаса (`'n'`, `'s'`, `'e'`, `'w'`, а также диагонали и грани) плюс `CENTER` (`'center'`), используются в качестве значений для опций *anchor* и *sticky*, а также методами, такими как [`Misc.grid_anchor()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Misc.grid_anchor).38983899#### `tkinter.LEFT`39003901#### `tkinter.RIGHT`39023903#### `tkinter.TOP`39043905#### `tkinter.BOTTOM`39063907Границы для опции *side* модуля packer (см. [`Pack.pack_configure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Pack.pack_configure)).39083909#### `tkinter.X`39103911#### `tkinter.Y`39123913#### `tkinter.BOTH`39143915#### `tkinter.NONE`39163917Значения для опции *fill* модуля packer: `'x'`, `'y'`, `'both'` или `'none'`.39183919#### `tkinter.RAISED`39203921#### `tkinter.SUNKEN`39223923#### `tkinter.FLAT`39243925#### `tkinter.RIDGE`39263927#### `tkinter.GROOVE`39283929#### `tkinter.SOLID`39303931Значения для опции *relief*, управляющей трёхмерной границей виджета.39323933#### `tkinter.HORIZONTAL`39343935#### `tkinter.VERTICAL`39363937Значения для опции *orient* виджетов, таких как [`Scale`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Scale), [`Scrollbar`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Scrollbar) и [`PanedWindow`](https://python-all.ru/3.16/library/tkinter.html#tkinter.PanedWindow).39383939#### `tkinter.CHAR`39403941#### `tkinter.WORD`39423943Значения для опции *wrap* виджета [`Text`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text), определяющей перенос строк по границам символов или слов.39443945#### `tkinter.BASELINE`39463947Значение выравнивания текста `'baseline'`.39483949#### `tkinter.INSIDE`39503951#### `tkinter.OUTSIDE`39523953Значения для параметра *bordermode* менеджера размещения (см. [`Place.place_configure()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Place.place_configure)).39543955#### `tkinter.INSERT`39563957#### `tkinter.CURRENT`39583959#### `tkinter.END`39603961#### `tkinter.ANCHOR`39623963#### `tkinter.SEL`39643965#### `tkinter.SEL_FIRST`39663967#### `tkinter.SEL_LAST`39683969Символические индексы, используемые виджетами [`Text`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text), [`Entry`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Entry), [`Listbox`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox) и [`Canvas`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas), такие как `'insert'` (курсор вставки), `'current'`, `'end'`, `'anchor'` и границы выделения (`'sel.first'` и `'sel.last'`).39703971#### `tkinter.ALL`39723973Специальный тег `'all'`, который соответствует каждому элементу [`Canvas`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas) или каждому символу [`Text`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Text) (например, `canvas.delete(ALL)`).39743975#### `tkinter.NORMAL`39763977#### `tkinter.DISABLED`39783979#### `tkinter.ACTIVE`39803981#### `tkinter.HIDDEN`39823983Значения для параметра *state* различных виджетов и элементов.39843985#### `tkinter.CASCADE`39863987#### `tkinter.CHECKBUTTON`39883989#### `tkinter.COMMAND`39903991#### `tkinter.RADIOBUTTON`39923993#### `tkinter.SEPARATOR`39943995Типы записей меню, используемые как аргумент *itemType* для [`Menu.add()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Menu.add) и [`Menu.insert()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Menu.insert).39963997#### `tkinter.SINGLE`39983999#### `tkinter.BROWSE`40004001#### `tkinter.MULTIPLE`40024003#### `tkinter.EXTENDED`40044005Значения для параметра *selectmode* виджета [`Listbox`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Listbox).40064007#### `tkinter.PIESLICE`40084009#### `tkinter.CHORD`40104011#### `tkinter.ARC`40124013Значения для параметра *style* элемента [`Canvas`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas) arc.40144015#### `tkinter.BUTT`40164017#### `tkinter.PROJECTING`40184019#### `tkinter.ROUND`40204021#### `tkinter.BEVEL`40224023#### `tkinter.MITER`40244025Значения для параметров *capstyle* (`'butt'`, `'projecting'`, `'round'`) и *joinstyle* (`'round'`, `'bevel'`, `'miter'`) элементов линии [`Canvas`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas).40264027#### `tkinter.FIRST`40284029#### `tkinter.LAST`40304031Значения для параметра *arrow* элементов линии [`Canvas`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Canvas), указывающие, на каких концах установлены наконечники.40324033#### `tkinter.MOVETO`40344035#### `tkinter.SCROLL`40364037Первый аргумент, передаваемый [`Scrollbar`](https://python-all.ru/3.16/library/tkinter.html#tkinter.Scrollbar) в метод [`XView.xview()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.XView.xview) или [`YView.yview()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.YView.yview) прокручиваемого виджета.40384039#### `tkinter.UNITS`40404041#### `tkinter.PAGES`40424043Значения для аргумента *what* методов [`XView.xview_scroll()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.XView.xview_scroll) и [`YView.yview_scroll()`](https://python-all.ru/3.16/library/tkinter.html#tkinter.YView.yview_scroll).40444045#### `tkinter.UNDERLINE`40464047#### `tkinter.NUMERIC`40484049#### `tkinter.DOTBOX`40504051Другие значения параметров: `'underline'`, `'numeric'` и `'dotbox'`.4052