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