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

---

# Диалоговые окна Tkinter

## `tkinter.simpledialog` – Стандартные диалоговые окна ввода Tkinter

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

---

Модуль `tkinter.simpledialog` содержит удобные классы и функции для создания простых модальных диалогов для получения значения от пользователя.

#### `tkinter.simpledialog.askfloat(title, prompt, *, initialvalue=None, minvalue=None, maxvalue=None, parent=None)`

#### `tkinter.simpledialog.askinteger(title, prompt, *, initialvalue=None, minvalue=None, maxvalue=None, parent=None)`

#### `tkinter.simpledialog.askstring(title, prompt, *, initialvalue=None, show=None, parent=None)`

Предлагает пользователю ввести значение нужного типа и возвращает его, или `None`, если диалог отменён.

*title* – заголовок диалога, а *prompt* – сообщение, отображаемое над полем ввода. *initialvalue* – значение, изначально помещаемое в поле. *parent* – окно, над которым отображается диалог. `askinteger()` и `askfloat()` также принимают *minvalue* и *maxvalue*, которые ограничивают допустимое значение. `askstring()` также принимает *show* – символ, используемый для маскировки вводимого текста, например `'*'` для скрытия пароля.

#### `class tkinter.simpledialog.Dialog(parent, title=None)`

Базовый класс для пользовательских диалогов. При создании экземпляра диалог отображается модально, и метод возвращает управление после закрытия диалога пользователем; введённое значение затем доступно в атрибуте `result`.

#### `result`

Значение, полученное от [`apply()`](https://python-all.ru/3.13/library/dialog.html#tkinter.simpledialog.Dialog.apply), или `None`, если диалог был отменён.

#### `body(master)`

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

#### `buttonbox()`

Поведение по умолчанию добавляет кнопки OK и Cancel. Переопределите для создания собственной разметки кнопок.

#### `validate()`

Проверяет данные, введённые пользователем. Возвращает true, если данные корректны – в этом случае диалог переходит к [`apply()`](https://python-all.ru/3.13/library/dialog.html#tkinter.simpledialog.Dialog.apply); возвращает false, чтобы оставить диалог открытым. Реализация по умолчанию всегда возвращает true; переопределите её для проверки ввода.

#### `apply()`

Обрабатывает данные, введённые пользователем, например сохраняя их в атрибуте `result`. Вызывается после успешного выполнения [`validate()`](https://python-all.ru/3.13/library/dialog.html#tkinter.simpledialog.Dialog.validate) и непосредственно перед уничтожением диалога. Реализация по умолчанию ничего не делает; переопределите её для обработки или сохранения результата.

#### `destroy()`

Уничтожает окно диалога, очищая ссылку на виджет, который имел начальный фокус.

#### `class tkinter.simpledialog.SimpleDialog(master, text='', buttons=[], default=None, cancel=None, title=None, class_=None)`

Простой модальный диалог, который отображает сообщение *text* над строкой кнопок с подписями, заданными *buttons*, и возвращает индекс кнопки, нажатой пользователем. *default* – это индекс кнопки, активируемой клавишей Return, *cancel* – индекс, возвращаемый при закрытии окна через оконный менеджер, *title* – заголовок окна, а *class\_* – имя класса Tk для окна.

#### `go()`

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

## `tkinter.filedialog` – Диалоги выбора файлов

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

---

Модуль `tkinter.filedialog` предоставляет классы и фабричные функции для создания окон выбора файлов/каталогов.

### Нативные диалоги открытия и сохранения

Следующие классы и функции предоставляют окна диалогов выбора файлов, объединяющие нативный внешний вид и поведение с настройками для изменения поведения. К перечисленным ниже классам и функциям применимы следующие именованные аргументы:

> *parent*
>
> – родительское окно, поверх которого будет размещён диалог
>
> *title*
>
> – заголовок окна
>
> *initialdir*
>
> – каталог, который будет открыт при запуске диалога
>
> *initialfile*
>
> – файл, выбранный при открытии диалога
>
> *filetypes*
>
> – последовательность кортежей (метка, шаблон), допускается символ '\*'
>
> *defaultextension*
>
> – расширение по умолчанию, добавляемое к имени файла (для диалогов сохранения)
>
> *multiple*
>
> – при значении true допускается выбор нескольких элементов

**Статические фабричные функции**

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

#### `tkinter.filedialog.askopenfile(mode='r', **options)`

#### `tkinter.filedialog.askopenfiles(mode='r', **options)`

Создаёт диалог [`Open`](https://python-all.ru/3.13/library/dialog.html#tkinter.filedialog.Open). `askopenfile()` возвращает открытый файловый объект или `None`, если диалог отменён. `askopenfiles()` возвращает список открытых файловых объектов или пустой кортеж, если отменён. Файлы открываются в режиме *mode* (по умолчанию только для чтения `'r'`).

#### `tkinter.filedialog.asksaveasfile(mode='w', **options)`

Создаёт диалог [`SaveAs`](https://python-all.ru/3.13/library/dialog.html#tkinter.filedialog.SaveAs) и возвращает открытый файловый объект или `None`, если диалог отменён. Файл открывается в режиме *mode* (по умолчанию `'w'`).

#### `tkinter.filedialog.askopenfilename(**options)`

#### `tkinter.filedialog.askopenfilenames(**options)`

Создаёт диалог [`Open`](https://python-all.ru/3.13/library/dialog.html#tkinter.filedialog.Open). `askopenfilename()` возвращает выбранное имя файла в виде строки или пустую строку, если диалог отменён. `askopenfilenames()` возвращает кортеж выбранных имён файлов или пустой кортеж, если отменён.

#### `tkinter.filedialog.asksaveasfilename(**options)`

Создаёт диалог [`SaveAs`](https://python-all.ru/3.13/library/dialog.html#tkinter.filedialog.SaveAs) и возвращает выбранное имя файла в виде строки или пустую строку, если диалог отменён.

#### `tkinter.filedialog.askdirectory(**options)`

Запрашивает у пользователя выбор каталога и возвращает его путь в виде строки или пустую строку, если диалог отменён. Дополнительный именованный аргумент: *mustexist* – если true, пользователь может выбрать только существующий каталог (по умолчанию false).

#### `class tkinter.filedialog.Open(master=None, **options)`

#### `class tkinter.filedialog.SaveAs(master=None, **options)`

Два указанных выше класса предоставляют нативные диалоговые окна для сохранения и загрузки файлов.

**Вспомогательные классы**

Следующие классы используются для создания окон выбора файлов/каталогов с нуля. Они не эмулируют нативный внешний вид и поведение платформы.

#### `class tkinter.filedialog.Directory(master=None, **options)`

Создаёт диалог, предлагающий пользователю выбрать каталог.

> **Примечание**
>
> Класс *FileDialog* следует подклассировать для реализации пользовательской обработки событий и поведения.

#### `class tkinter.filedialog.FileDialog(master, title=None)`

Создаёт базовый диалог выбора файла.

#### `cancel_command(event=None)`

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

#### `dirs_double_event(event)`

Обработчик события двойного щелчка по каталогу.

#### `dirs_select_event(event)`

Обработчик события щелчка по каталогу.

#### `files_double_event(event)`

Обработчик события двойного щелчка по файлу.

#### `files_select_event(event)`

Обработчик события одиночного щелчка по файлу.

#### `filter_command(event=None)`

Фильтрует файлы по каталогу.

#### `get_filter()`

Возвращает текущий используемый фильтр файлов.

#### `get_selection()`

Возвращает текущий выбранный элемент.

#### `go(dir_or_file=os.curdir, pattern='*', default='', key=None)`

Отрисовывает диалог и запускает цикл событий.

#### `ok_event(event)`

Закрывает диалог, возвращая текущий выбор.

#### `ok_command()`

Вызывается, когда пользователь подтверждает текущий выбор. Базовая реализация принимает выбор и закрывает диалог; [`LoadFileDialog`](https://python-all.ru/3.13/library/dialog.html#tkinter.filedialog.LoadFileDialog) и [`SaveFileDialog`](https://python-all.ru/3.13/library/dialog.html#tkinter.filedialog.SaveFileDialog) переопределяют его, чтобы сначала проверить выбор.

#### `quit(how=None)`

Закрывает диалог, возвращая имя файла, если таковое имеется.

#### `set_filter(dir, pat)`

Устанавливает фильтр файлов.

#### `set_selection(file)`

Обновляет текущий выбор файла на *file*.

#### `class tkinter.filedialog.LoadFileDialog(master, title=None)`

Подкласс FileDialog, который создаёт окно диалога для выбора существующего файла.

#### `ok_command()`

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

#### `class tkinter.filedialog.SaveFileDialog(master, title=None)`

Подкласс FileDialog, создающий окно диалога для выбора целевого файла.

#### `ok_command()`

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

## `tkinter.commondialog` – шаблоны окон диалогов

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

---

Модуль `tkinter.commondialog` предоставляет класс [`Dialog`](https://python-all.ru/3.13/library/dialog.html#tkinter.commondialog.Dialog), который является базовым классом для диалогов, определённых в других вспомогательных модулях.

#### `class tkinter.commondialog.Dialog(master=None, **options)`

#### `show(**options)`

Отображает окно диалога.

## `tkinter.dialog` – классические диалоговые окна Tk

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

---

Модуль `tkinter.dialog` предоставляет простое модальное диалоговое окно, построенное на классических (без тем) виджетах Tk.

#### `tkinter.dialog.DIALOG_ICON`

Имя стандартного растрового изображения (`'questhead'`), отображаемого диалогом [`Dialog`](https://python-all.ru/3.13/library/dialog.html#tkinter.dialog.Dialog).

#### `class tkinter.dialog.Dialog(master=None, cnf={}, **kw)`

Отображает модальное диалоговое окно, построенное из классических (без тем) виджетов Tk, и ожидает, пока пользователь нажмёт одну из его кнопок. Параметры, задаваемые через *cnf* или как именованные аргументы, включают *title* (заголовок окна), *text* (сообщение), *bitmap* (значок, по умолчанию [`DIALOG_ICON`](https://python-all.ru/3.13/library/dialog.html#tkinter.dialog.DIALOG_ICON)), *default* (индекс кнопки по умолчанию) и *strings* (последовательность подписей кнопок). После создания атрибут `num` содержит индекс кнопки, нажатой пользователем.

#### `destroy()`

Уничтожает окно диалога.

> **См. также**
>
> Модули [`tkinter.messagebox`](https://python-all.ru/3.13/library/tkinter.messagebox.html#module-tkinter.messagebox), [Чтение и запись файлов](https://python-all.ru/3.13/tutorial/inputoutput.html#tut-files)
