dialog.md
1> **Источник:** https://python-all.ru/3.14/library/dialog.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Диалоговые окна Tkinter89## `tkinter.simpledialog` – Стандартные диалоговые окна ввода Tkinter1011**Исходный код:** [Lib/tkinter/simpledialog.py](https://python-all.ru/src/3.14/Lib/tkinter/simpledialog.py)1213---1415Модуль `tkinter.simpledialog` содержит удобные классы и функции для создания простых модальных диалогов для получения значения от пользователя.1617#### `tkinter.simpledialog.askfloat(title, prompt, *, initialvalue=None, minvalue=None, maxvalue=None, parent=None)`1819#### `tkinter.simpledialog.askinteger(title, prompt, *, initialvalue=None, minvalue=None, maxvalue=None, parent=None)`2021#### `tkinter.simpledialog.askstring(title, prompt, *, initialvalue=None, show=None, parent=None)`2223Предлагает пользователю ввести значение нужного типа и возвращает его, или `None`, если диалог отменён.2425*title* – заголовок диалога, а *prompt* – сообщение, отображаемое над полем ввода. *initialvalue* – значение, изначально помещаемое в поле. *parent* – окно, над которым отображается диалог. `askinteger()` и `askfloat()` также принимают *minvalue* и *maxvalue*, которые ограничивают допустимое значение. `askstring()` также принимает *show* – символ, используемый для маскировки вводимого текста, например `'*'` для скрытия пароля.2627#### `class tkinter.simpledialog.Dialog(parent, title=None)`2829Базовый класс для пользовательских диалогов. При создании экземпляра диалог отображается модально, и метод возвращает управление после закрытия диалога пользователем; введённое значение затем доступно в атрибуте `result`.3031#### `result`3233Значение, полученное от [`apply()`](https://python-all.ru/3.14/library/dialog.html#tkinter.simpledialog.Dialog.apply), или `None`, если диалог был отменён.3435#### `body(master)`3637Переопределите для создания интерфейса диалога и возврата виджета, который должен получить начальный фокус.3839#### `buttonbox()`4041Поведение по умолчанию добавляет кнопки OK и Cancel. Переопределите для создания собственной разметки кнопок.4243#### `validate()`4445Проверяет данные, введённые пользователем. Возвращает true, если данные корректны – в этом случае диалог переходит к [`apply()`](https://python-all.ru/3.14/library/dialog.html#tkinter.simpledialog.Dialog.apply); возвращает false, чтобы оставить диалог открытым. Реализация по умолчанию всегда возвращает true; переопределите её для проверки ввода.4647#### `apply()`4849Обрабатывает данные, введённые пользователем, например сохраняя их в атрибуте `result`. Вызывается после успешного выполнения [`validate()`](https://python-all.ru/3.14/library/dialog.html#tkinter.simpledialog.Dialog.validate) и непосредственно перед уничтожением диалога. Реализация по умолчанию ничего не делает; переопределите её для обработки или сохранения результата.5051#### `destroy()`5253Уничтожает окно диалога, очищая ссылку на виджет, который имел начальный фокус.5455#### `class tkinter.simpledialog.SimpleDialog(master, text='', buttons=[], default=None, cancel=None, title=None, class_=None)`5657Простой модальный диалог, который отображает сообщение *text* над строкой кнопок с подписями, заданными *buttons*, и возвращает индекс кнопки, нажатой пользователем. *default* – это индекс кнопки, активируемой клавишей Return, *cancel* – индекс, возвращаемый при закрытии окна через оконный менеджер, *title* – заголовок окна, а *class\_* – имя класса Tk для окна.5859#### `go()`6061Отображает диалог, ожидает, пока пользователь нажмёт кнопку или закроет окно, и возвращает индекс выбранной кнопки.6263## `tkinter.filedialog` – Диалоги выбора файлов6465**Исходный код:** [Lib/tkinter/filedialog.py](https://python-all.ru/src/3.14/Lib/tkinter/filedialog.py)6667---6869Модуль `tkinter.filedialog` предоставляет классы и фабричные функции для создания окон выбора файлов/каталогов.7071### Нативные диалоги открытия и сохранения7273Следующие классы и функции предоставляют окна диалогов выбора файлов, объединяющие нативный внешний вид и поведение с настройками для изменения поведения. К перечисленным ниже классам и функциям применимы следующие именованные аргументы:7475> *parent*76>77> – родительское окно, поверх которого будет размещён диалог78>79> *title*80>81> – заголовок окна82>83> *initialdir*84>85> – каталог, который будет открыт при запуске диалога86>87> *initialfile*88>89> – файл, выбранный при открытии диалога90>91> *filetypes*92>93> – последовательность кортежей (метка, шаблон), допускается символ '\*'94>95> *defaultextension*96>97> – расширение по умолчанию, добавляемое к имени файла (для диалогов сохранения)98>99> *multiple*100>101> – при значении true допускается выбор нескольких элементов102103**Статические фабричные функции**104105При вызове следующие функции создают модальный диалог с нативным внешним видом, ожидают выбора пользователя и возвращают результат. Точное возвращаемое значение зависит от функции (см. ниже); при отмене диалога возвращается пустая строка, пустой кортеж или `None`. Точный тип этого пустого значения может различаться в зависимости от платформы и версии Tk, поэтому проверяйте результат на истинность, а не сравнивайте с конкретным значением.106107#### `tkinter.filedialog.askopenfile(mode='r', **options)`108109#### `tkinter.filedialog.askopenfiles(mode='r', **options)`110111Создаёт диалог [`Open`](https://python-all.ru/3.14/library/dialog.html#tkinter.filedialog.Open). `askopenfile()` возвращает открытый файловый объект или `None`, если диалог отменён. `askopenfiles()` возвращает список открытых файловых объектов или пустой кортеж, если отменён. Файлы открываются в режиме *mode* (по умолчанию только для чтения `'r'`).112113#### `tkinter.filedialog.asksaveasfile(mode='w', **options)`114115Создаёт диалог [`SaveAs`](https://python-all.ru/3.14/library/dialog.html#tkinter.filedialog.SaveAs) и возвращает открытый файловый объект или `None`, если диалог отменён. Файл открывается в режиме *mode* (по умолчанию `'w'`).116117#### `tkinter.filedialog.askopenfilename(**options)`118119#### `tkinter.filedialog.askopenfilenames(**options)`120121Создаёт диалог [`Open`](https://python-all.ru/3.14/library/dialog.html#tkinter.filedialog.Open). `askopenfilename()` возвращает выбранное имя файла в виде строки или пустую строку, если диалог отменён. `askopenfilenames()` возвращает кортеж выбранных имён файлов или пустой кортеж, если отменён.122123#### `tkinter.filedialog.asksaveasfilename(**options)`124125Создаёт диалог [`SaveAs`](https://python-all.ru/3.14/library/dialog.html#tkinter.filedialog.SaveAs) и возвращает выбранное имя файла в виде строки или пустую строку, если диалог отменён.126127#### `tkinter.filedialog.askdirectory(**options)`128129Запрашивает у пользователя выбор каталога и возвращает его путь в виде строки или пустую строку, если диалог отменён. Дополнительный именованный аргумент: *mustexist* – если true, пользователь может выбрать только существующий каталог (по умолчанию false).130131#### `class tkinter.filedialog.Open(master=None, **options)`132133#### `class tkinter.filedialog.SaveAs(master=None, **options)`134135Два указанных выше класса предоставляют нативные диалоговые окна для сохранения и загрузки файлов.136137**Вспомогательные классы**138139Следующие классы используются для создания окон выбора файлов/каталогов с нуля. Они не эмулируют нативный внешний вид и поведение платформы.140141#### `class tkinter.filedialog.Directory(master=None, **options)`142143Создаёт диалог, предлагающий пользователю выбрать каталог.144145> **Примечание**146>147> Класс *FileDialog* следует подклассировать для реализации пользовательской обработки событий и поведения.148149#### `class tkinter.filedialog.FileDialog(master, title=None)`150151Создаёт базовый диалог выбора файла.152153#### `cancel_command(event=None)`154155Запускает завершение диалогового окна.156157#### `dirs_double_event(event)`158159Обработчик события двойного щелчка по каталогу.160161#### `dirs_select_event(event)`162163Обработчик события щелчка по каталогу.164165#### `files_double_event(event)`166167Обработчик события двойного щелчка по файлу.168169#### `files_select_event(event)`170171Обработчик события одиночного щелчка по файлу.172173#### `filter_command(event=None)`174175Фильтрует файлы по каталогу.176177#### `get_filter()`178179Возвращает текущий используемый фильтр файлов.180181#### `get_selection()`182183Возвращает текущий выбранный элемент.184185#### `go(dir_or_file=os.curdir, pattern='*', default='', key=None)`186187Отрисовывает диалог и запускает цикл событий.188189#### `ok_event(event)`190191Закрывает диалог, возвращая текущий выбор.192193#### `ok_command()`194195Вызывается, когда пользователь подтверждает текущий выбор. Базовая реализация принимает выбор и закрывает диалог; [`LoadFileDialog`](https://python-all.ru/3.14/library/dialog.html#tkinter.filedialog.LoadFileDialog) и [`SaveFileDialog`](https://python-all.ru/3.14/library/dialog.html#tkinter.filedialog.SaveFileDialog) переопределяют его, чтобы сначала проверить выбор.196197#### `quit(how=None)`198199Закрывает диалог, возвращая имя файла, если таковое имеется.200201#### `set_filter(dir, pat)`202203Устанавливает фильтр файлов.204205#### `set_selection(file)`206207Обновляет текущий выбор файла на *file*.208209#### `class tkinter.filedialog.LoadFileDialog(master, title=None)`210211Подкласс FileDialog, который создаёт окно диалога для выбора существующего файла.212213#### `ok_command()`214215Проверяет, что файл указан и выбранный элемент указывает на уже существующий файл.216217#### `class tkinter.filedialog.SaveFileDialog(master, title=None)`218219Подкласс FileDialog, создающий окно диалога для выбора целевого файла.220221#### `ok_command()`222223Проверяет, указывает ли выбранный элемент на допустимый файл, не являющийся каталогом. Требуется подтверждение, если выбран уже существующий файл.224225## `tkinter.commondialog` – шаблоны окон диалогов226227**Исходный код:** [Lib/tkinter/commondialog.py](https://python-all.ru/src/3.14/Lib/tkinter/commondialog.py)228229---230231Модуль `tkinter.commondialog` предоставляет класс [`Dialog`](https://python-all.ru/3.14/library/dialog.html#tkinter.commondialog.Dialog), который является базовым классом для диалогов, определённых в других вспомогательных модулях.232233#### `class tkinter.commondialog.Dialog(master=None, **options)`234235#### `show(**options)`236237Отображает окно диалога.238239## `tkinter.dialog` – классические диалоговые окна Tk240241**Исходный код:** [Lib/tkinter/dialog.py](https://python-all.ru/src/3.14/Lib/tkinter/dialog.py)242243---244245Модуль `tkinter.dialog` предоставляет простое модальное диалоговое окно, построенное на классических (без тем) виджетах Tk.246247#### `tkinter.dialog.DIALOG_ICON`248249Имя стандартного растрового изображения (`'questhead'`), отображаемого диалогом [`Dialog`](https://python-all.ru/3.14/library/dialog.html#tkinter.dialog.Dialog).250251#### `class tkinter.dialog.Dialog(master=None, cnf={}, **kw)`252253Отображает модальное диалоговое окно, построенное из классических (без тем) виджетов Tk, и ожидает, пока пользователь нажмёт одну из его кнопок. Параметры, задаваемые через *cnf* или как именованные аргументы, включают *title* (заголовок окна), *text* (сообщение), *bitmap* (значок, по умолчанию [`DIALOG_ICON`](https://python-all.ru/3.14/library/dialog.html#tkinter.dialog.DIALOG_ICON)), *default* (индекс кнопки по умолчанию) и *strings* (последовательность подписей кнопок). После создания атрибут `num` содержит индекс кнопки, нажатой пользователем.254255#### `destroy()`256257Уничтожает окно диалога.258259> **См. также**260>261> Модули [`tkinter.messagebox`](https://python-all.ru/3.14/library/tkinter.messagebox.html#module-tkinter.messagebox), [Чтение и запись файлов](https://python-all.ru/3.14/tutorial/inputoutput.html#tut-files)262