> **Источник:** https://python-all.ru/3.11/library/tkinter.tix.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# [`tkinter.tix`](https://python-all.ru/3.11/library/tkinter.tix.html#module-tkinter.tix) – Дополнительные виджеты для Tk

**Исходный код:** [Lib/tkinter/tix.py](https://python-all.ru/src/3.11/Lib/tkinter/tix.py)

Устарело с версии 3.6: Это расширение Tk больше не поддерживается и не должно использоваться в новом коде. Вместо него используйте [`tkinter.ttk`](https://python-all.ru/3.11/library/tkinter.ttk.html#module-tkinter.ttk).

---

Модуль [`tkinter.tix`](https://python-all.ru/3.11/library/tkinter.tix.html#module-tkinter.tix) (Tk Interface Extension) предоставляет дополнительный богатый набор виджетов. Хотя в стандартной библиотеке Tk много полезных виджетов, их набор далеко не полный. Библиотека [`tkinter.tix`](https://python-all.ru/3.11/library/tkinter.tix.html#module-tkinter.tix) предоставляет большинство часто необходимых виджетов, отсутствующих в стандартном Tk: [`HList`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.HList), [`ComboBox`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.ComboBox), [`Control`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.Control) (также известный как SpinBox) и набор прокручиваемых виджетов. [`tkinter.tix`](https://python-all.ru/3.11/library/tkinter.tix.html#module-tkinter.tix) также включает множество других виджетов, полезных в самых разных приложениях: [`NoteBook`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.NoteBook), [`FileEntry`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.FileEntry), [`PanedWindow`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.PanedWindow) и т.д.; их более 40.

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

> **См. также**
>
> **[Домашняя страница Tix](https://python-all.ru/3.11/library/tkinter.tix.html)**
>
> Домашняя страница `Tix`. Содержит ссылки на дополнительную документацию и загрузки.
>
> **[Страницы руководства Tix](https://python-all.ru/3.11/library/tkinter.tix.html)**
>
> Онлайн-версия страниц руководства и справочных материалов.
>
> **[Руководство по программированию Tix](https://python-all.ru/3.11/library/tkinter.tix.html)**
>
> Онлайн-версия справочного материала для программиста.
>
> **[Приложения Tix для разработки](https://python-all.ru/3.11/library/tkinter.tix.html)**
>
> Приложения Tix для разработки программ Tix и Tkinter. Приложения Tide работают в среде Tk или Tkinter и включают **TixInspect** – инспектор для удалённого изменения и отладки приложений Tix/Tk/Tkinter.

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

#### `class tkinter.tix.Tk(screenName=None, baseName=None, className='Tix')`

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

Классы в модуле [`tkinter.tix`](https://python-all.ru/3.11/library/tkinter.tix.html#module-tkinter.tix) наследуют классы из [`tkinter`](https://python-all.ru/3.11/library/tkinter.html#module-tkinter). Первый импортирует второй, поэтому для использования [`tkinter.tix`](https://python-all.ru/3.11/library/tkinter.tix.html#module-tkinter.tix) с Tkinter достаточно импортировать один модуль. В общем случае можно просто импортировать [`tkinter.tix`](https://python-all.ru/3.11/library/tkinter.tix.html#module-tkinter.tix) и заменить вызов верхнего уровня [`tkinter.Tk`](https://python-all.ru/3.11/library/tkinter.html#tkinter.Tk) на `tix.Tk`:

```python
from tkinter import tix
from tkinter.constants import *
root = tix.Tk()
```

Чтобы использовать [`tkinter.tix`](https://python-all.ru/3.11/library/tkinter.tix.html#module-tkinter.tix), необходимо установить виджеты Tix, обычно вместе с установкой виджетов Tk. Чтобы проверить установку, попробуйте следующее:

```python
from tkinter import tix
root = tix.Tk()
root.tk.eval('package require Tix')
```

## Виджеты Tix

[Tix](https://python-all.ru/3.11/library/tkinter.tix.html) добавляет более 40 классов виджетов в набор [`tkinter`](https://python-all.ru/3.11/library/tkinter.html#module-tkinter).

### Базовые виджеты

#### `class tkinter.tix.Balloon`

[Balloon](https://python-all.ru/3.11/library/tkinter.tix.html) – всплывающая подсказка, появляющаяся над виджетом. Когда пользователь перемещает курсор на виджет, к которому привязан Balloon, на экране появляется небольшое всплывающее окно с описательным сообщением.

#### `class tkinter.tix.ButtonBox`

Виджет [ButtonBox](https://python-all.ru/3.11/library/tkinter.tix.html) создаёт группу кнопок, такую, как обычно используется для `Ok Cancel`.

#### `class tkinter.tix.ComboBox`

Виджет [ComboBox](https://python-all.ru/3.11/library/tkinter.tix.html) аналогичен элементу управления combo box в MS Windows. Пользователь может выбрать вариант, введя текст в подвиджет ввода или выбрав из подвиджета списка.

#### `class tkinter.tix.Control`

Виджет [Control](https://python-all.ru/3.11/library/tkinter.tix.html) также известен как виджет `SpinBox`. Пользователь может изменить значение, нажимая две кнопки со стрелками или вводя значение непосредственно в поле ввода. Новое значение будет проверено на соответствие заданным пользователем верхнему и нижнему пределам.

#### `class tkinter.tix.LabelEntry`

Виджет [LabelEntry](https://python-all.ru/3.11/library/tkinter.tix.html) объединяет виджет ввода и метку в один мега-виджет. Его можно использовать для упрощения создания интерфейсов типа «форма ввода».

#### `class tkinter.tix.LabelFrame`

Виджет [LabelFrame](https://python-all.ru/3.11/library/tkinter.tix.html) объединяет виджет фрейма и метку в один мега-виджет. Чтобы создать виджеты внутри виджета LabelFrame, создавайте новые виджеты относительно подвиджета `frame` и управляйте ими внутри подвиджета `frame`.

#### `class tkinter.tix.Meter`

Виджет [Meter](https://python-all.ru/3.11/library/tkinter.tix.html) можно использовать для отображения хода выполнения фоновой задачи, выполнение которой может занять много времени.

#### `class tkinter.tix.OptionMenu`

Виджет [OptionMenu](https://python-all.ru/3.11/library/tkinter.tix.html) создает кнопку меню с вариантами выбора.

#### `class tkinter.tix.PopupMenu`

Виджет [PopupMenu](https://python-all.ru/3.11/library/tkinter.tix.html) можно использовать как замену команды `tk_popup`. Преимущество виджета `Tix` [`PopupMenu`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.PopupMenu) в том, что для работы с ним требуется меньше кода приложения.

#### `class tkinter.tix.Select`

Виджет [Select](https://python-all.ru/3.11/library/tkinter.tix.html) представляет собой контейнер для подвиджетов-кнопок. Его можно использовать для предоставления пользователю вариантов выбора в стиле радиокнопок или флажков.

#### `class tkinter.tix.StdButtonBox`

Виджет [StdButtonBox](https://python-all.ru/3.11/library/tkinter.tix.html) представляет собой группу стандартных кнопок для диалоговых окон в стиле Motif.

### Выбор файлов

#### `class tkinter.tix.DirList`

Виджет [DirList](https://python-all.ru/3.11/library/tkinter.tix.html) отображает список каталогов: текущего, родительских и вложенных. Пользователь может выбрать один из отображаемых в списке каталогов или перейти в другой каталог.

#### `class tkinter.tix.DirTree`

Виджет [DirTree](https://python-all.ru/3.11/library/tkinter.tix.html) отображает дерево каталогов: текущего, родительских и вложенных. Пользователь может выбрать один из отображаемых в списке каталогов или перейти в другой каталог.

#### `class tkinter.tix.DirSelectDialog`

Виджет [DirSelectDialog](https://python-all.ru/3.11/library/tkinter.tix.html) отображает каталоги файловой системы в диалоговом окне. Пользователь может использовать это диалоговое окно для навигации по файловой системе и выбора нужного каталога.

#### `class tkinter.tix.DirSelectBox`

Виджет [`DirSelectBox`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.DirSelectBox) похож на стандартное диалоговое окно выбора каталога Motif(TM). Обычно используется для выбора пользователем каталога. DirSelectBox сохраняет недавно выбранные каталоги в виджет ComboBox, чтобы их можно было быстро выбрать снова.

#### `class tkinter.tix.ExFileSelectBox`

Виджет [ExFileSelectBox](https://python-all.ru/3.11/library/tkinter.tix.html) обычно встраивается в виджет tixExFileSelectDialog. Он предоставляет удобный способ выбора файлов для пользователя. Стиль виджета [`ExFileSelectBox`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.ExFileSelectBox) очень похож на стандартное диалоговое окно файла в MS Windows 3.1.

#### `class tkinter.tix.FileSelectBox`

Виджет [FileSelectBox](https://python-all.ru/3.11/library/tkinter.tix.html) похож на стандартное диалоговое окно выбора файла Motif(TM). Обычно используется для выбора пользователем файла. FileSelectBox сохраняет недавно выбранные файлы в виджет [`ComboBox`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.ComboBox), чтобы их можно было быстро выбрать снова.

#### `class tkinter.tix.FileEntry`

Виджет [FileEntry](https://python-all.ru/3.11/library/tkinter.tix.html) может использоваться для ввода имени файла. Пользователь может ввести имя файла вручную. Альтернативно, пользователь может нажать на кнопку рядом с полем ввода, что вызовет диалог выбора файла.

### Иерархический список

#### `class tkinter.tix.HList`

Виджет [HList](https://python-all.ru/3.11/library/tkinter.tix.html) можно использовать для отображения любых данных, имеющих иерархическую структуру, например, деревьев каталогов файловой системы. Элементы списка имеют отступы и соединяются линиями ветвей в соответствии с их местом в иерархии.

#### `class tkinter.tix.CheckList`

Виджет [CheckList](https://python-all.ru/3.11/library/tkinter.tix.html) отображает список элементов для выбора пользователем. CheckList работает аналогично виджетам Tk Checkbutton или Radiobutton, но может обрабатывать гораздо больше элементов, чем они.

#### `class tkinter.tix.Tree`

Виджет [Tree](https://python-all.ru/3.11/library/tkinter.tix.html) можно использовать для отображения иерархических данных в виде дерева. Пользователь может настраивать вид дерева, открывая или закрывая его части.

### Табличный ListBox

#### `class tkinter.tix.TList`

Виджет [TList](https://python-all.ru/3.11/library/tkinter.tix.html) можно использовать для отображения данных в табличном формате. Записи списка виджета [`TList`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.TList) аналогичны записям в виджете Tk listbox. Основные отличия: (1) виджет [`TList`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.TList) может отображать записи списка в двумерном формате и (2) можно использовать графические изображения, а также несколько цветов и шрифтов для записей списка.

### Менеджеры виджетов

#### `class tkinter.tix.PanedWindow`

Виджет [PanedWindow](https://python-all.ru/3.11/library/tkinter.tix.html) позволяет пользователю интерактивно изменять размеры нескольких панелей. Панели могут быть расположены вертикально или горизонтально. Пользователь меняет размеры панелей, перетаскивая маркер изменения размера между двумя панелями.

#### `class tkinter.tix.ListNoteBook`

Виджет [ListNoteBook](https://python-all.ru/3.11/library/tkinter.tix.html) очень похож на виджет `TixNoteBook`: его можно использовать для отображения множества окон в ограниченном пространстве, используя метафору записной книжки. Записная книжка разделена на стопку страниц (окон). В каждый момент времени может быть показана только одна из этих страниц. Пользователь может перемещаться по страницам, выбирая имя нужной страницы в подвиджете `hlist`.

#### `class tkinter.tix.NoteBook`

Виджет [NoteBook](https://python-all.ru/3.11/library/tkinter.tix.html) можно использовать для отображения множества окон в ограниченном пространстве, используя метафору записной книжки. Записная книжка разделена на стопку страниц. В каждый момент времени может быть показана только одна из этих страниц. Пользователь может перемещаться по страницам, выбирая визуальные «вкладки» в верхней части виджета NoteBook.

### Типы изображений

Модуль [`tkinter.tix`](https://python-all.ru/3.11/library/tkinter.tix.html#module-tkinter.tix) добавляет:

- [pixmap](https://python-all.ru/3.11/library/tkinter.tix.html) возможности для всех виджетов [`tkinter.tix`](https://python-all.ru/3.11/library/tkinter.tix.html#module-tkinter.tix) и [`tkinter`](https://python-all.ru/3.11/library/tkinter.html#module-tkinter) для создания цветных изображений из XPM-файлов.
- Типы изображений [Compound](https://python-all.ru/3.11/library/tkinter.tix.html) можно использовать для создания изображений, состоящих из нескольких горизонтальных строк; каждая строка состоит из последовательности элементов (текстов, битовых карт, изображений или пробелов), расположенных слева направо. Например, составное изображение можно использовать для одновременного отображения битовой карты и текстовой строки в виджете Tk `Button`.

### Прочие виджеты

#### `class tkinter.tix.InputOnly`

Виджеты [InputOnly](https://python-all.ru/3.11/library/tkinter.tix.html) предназначены для получения ввода от пользователя, что можно сделать с помощью команды `bind` (только Unix).

### Менеджер геометрии Form

Кроме того, [`tkinter.tix`](https://python-all.ru/3.11/library/tkinter.tix.html#module-tkinter.tix) расширяет [`tkinter`](https://python-all.ru/3.11/library/tkinter.html#module-tkinter), предоставляя:

#### `class tkinter.tix.Form`

Менеджер геометрии [Form](https://python-all.ru/3.11/library/tkinter.tix.html), основанный на правилах привязки для всех виджетов Tk.

## Команды Tix

#### `class tkinter.tix.tixCommand`

[Команды tix](https://python-all.ru/3.11/library/tkinter.tix.html) предоставляют доступ к различным элементам внутреннего состояния `Tix` и контексту приложения `Tix`. Большинство информации, с которой работают эти методы, относится к приложению в целом, или к экрану или дисплею, а не к конкретному окну.

Для просмотра текущих настроек обычное использование:

```python
from tkinter import tix
root = tix.Tk()
print(root.tix_configure())
```

#### `tixCommand.tix_configure(cnf=None, **kw)`

Запрашивает или изменяет параметры конфигурации контекста приложения Tix. Если параметр не указан, возвращает словарь всех доступных параметров. Если параметр указан без значения, метод возвращает список, описывающий указанный именованный параметр (этот список будет идентичен соответствующему подсписку значения, возвращаемого, если параметр не указан). Если указана одна или несколько пар «параметр-значение», метод изменяет указанный параметр(ы) на заданное значение(я); в этом случае метод возвращает пустую строку. Параметром может быть любой из параметров конфигурации.

#### `tixCommand.tix_cget(option)`

Возвращает текущее значение параметра конфигурации, заданного *option*. Параметр может быть любым из параметров конфигурации.

#### `tixCommand.tix_getbitmap(name)`

Ищет файл растрового изображения с именем `name.xpm` или `name` в одном из каталогов растровых изображений (см. метод [`tix_addbitmapdir()`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_addbitmapdir)). Используя [`tix_getbitmap()`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_getbitmap), можно избежать жесткого прописывания путей к файлам растровых изображений в приложении. В случае успеха возвращает полный путь к файлу растрового изображения с префиксом в виде символа `@`. Возвращаемое значение можно использовать для настройки параметра `bitmap` виджетов Tk и Tix.

#### `tixCommand.tix_addbitmapdir(directory)`

Tix ведёт список каталогов, в которых методы [`tix_getimage()`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_getimage) и [`tix_getbitmap()`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_getbitmap) будут искать файлы изображений. Стандартный каталог растровых изображений – `$TIX_LIBRARY/bitmaps`. Метод [`tix_addbitmapdir()`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_addbitmapdir) добавляет *directory* в этот список. Используя этот метод, файлы изображений приложения также можно находить с помощью методов [`tix_getimage()`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_getimage) или [`tix_getbitmap()`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_getbitmap).

#### `tixCommand.tix_filedialog([dlgclass])`

Возвращает диалог выбора файла, который может использоваться совместно в разных вызовах из этого приложения. Этот метод создаёт виджет диалога выбора файла при первом вызове. Этот диалог будет возвращаться всеми последующими вызовами [`tix_filedialog()`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_filedialog). Необязательный параметр dlgclass можно передать в виде строки, чтобы указать, какой тип виджета диалога выбора файла требуется. Возможные значения: `tix`, `FileSelectDialog` или `tixExFileSelectDialog`.

#### `tixCommand.tix_getimage(self, name)`

Ищет файл изображения с именем `name.xpm`, `name.xbm` или `name.ppm` в одном из каталогов растровых изображений (см. метод [`tix_addbitmapdir()`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_addbitmapdir) выше). Если существует несколько файлов с одинаковым именем (но разными расширениями), то тип изображения выбирается в соответствии с глубиной цвета X-дисплея: на монохромных дисплеях выбираются изображения xbm, а на цветных – цветные изображения. Используя [`tix_getimage()`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_getimage), можно избежать жесткого прописывания путей к файлам изображений в приложении. В случае успеха этот метод возвращает имя только что созданного изображения, которое можно использовать для настройки параметра `image` виджетов Tk и Tix.

#### `tixCommand.tix_option_get(name)`

Получает параметры, поддерживаемые механизмом схем Tix.

#### `tixCommand.tix_resetoptions(newScheme, newFontSet[, newScmPrio])`

Сбрасывает схему и набор шрифтов приложения Tix на *newScheme* и *newFontSet* соответственно. Это влияет только на виджеты, созданные после этого вызова. Поэтому лучше всего вызывать метод resetoptions до создания каких-либо виджетов в приложении Tix.

Необязательный параметр *newScmPrio* можно указать для сброса уровня приоритета параметров Tk, установленных схемами Tix.

Из-за того, как Tk обрабатывает базу данных опций X, после импорта и инициализации Tix невозможно сбросить цветовые схемы и наборы шрифтов с помощью метода `tix_config()`. Вместо этого необходимо использовать метод [`tix_resetoptions()`](https://python-all.ru/3.11/library/tkinter.tix.html#tkinter.tix.tixCommand.tix_resetoptions).
