Диалоговое окно выбора файла Python

Обновлено: 21.11.2024

Модуль файловых диалогов Python Tkinter предлагает вам набор уникальных диалогов, которые можно использовать при работе с файлами. Tkinter имеет множество различных диалоговых окон, но диалоговые окна filedialog специально предназначены для выбора файлов. И, как и ожидалось от диалоговых окон, они очень удобны для пользователя.

Ниже приведен список всех доступных опций диалогового окна. Обязательно импортируйте filedialog из tkinter, как мы показали ниже. Если вы хотите использовать tkinter, а также filedialog (что вам наверняка понадобится), вам придется импортировать tkinter отдельно.

Параметры диалогового окна файла

  • parent – окно, в котором должно быть размещено диалоговое окно.
  • title – название, отображаемое в диалоговом окне.
  • initialdir – каталог, в котором сначала открывается диалоговое окно.
  • initialfile — файл, выбранный диалоговым окном при его открытии.
  • filetypes — определяет тип файлов, которые будут загружаться/сохраняться в диалогах. Передается как кортеж в формате (Label, Filetype). Вы также можете использовать подстановочный знак *, который применяется ко всем типам файлов. Вы также можете передать несколько кортежей для нескольких вариантов.
  • defaultextension — расширение по умолчанию, которое будет применяться к файлам при добавлении к ним. (Применимо только к диалогам сохранения)
  • multiple – если установлено значение true, можно выбрать несколько элементов.

Многие из этих опций на самом деле необязательны. В лучшем случае вы обнаружите, что используете 3–4 на функцию.

Возврат пути к файлу

Обратите внимание на упомянутую здесь опцию Типы файлов. Обратите внимание, как указанный выше параметр для типов файлов повлиял на параметры графического интерфейса пользователя.

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

Используйте функцию askopenfilenames, если хотите выбрать несколько файлов.

Выбор файла

Разница между функцией askopenfile и функцией askopenfilename(s) заключается в том, что одна из них возвращает фактический объект File, а другая просто возвращает путь к файлу. В приведенном ниже примере это очевидно. Где мы выбираем случайный текстовый файл и видим его вывод на экран после вызова функции чтения.

Ниже приведен текст, который был записан в выбранный нами файл.

Внешний вид графического интерфейса точно такой же, как у функции askopenfilename. Аналогично, askopenfiles можно использовать для открытия нескольких файлов.

Сохранение файла

Функция asksaveasfile используется для сохранения файла в указанном месте. Вы можете выбрать это местоположение с помощью того же графического интерфейса выбора, что и в приведенных выше примерах.

Например, вы можете перейти на рабочий стол и сохранить там файл с именем по вашему выбору. Не забудьте указать расширение при сохранении файлов, в противном случае используйте параметр defaultextension, чтобы назначить расширение для ваших файлов.

На изображении выше показан графический интерфейс для функции asksaveasfile. Самая большая разница — кнопка «Сохранить» вместо кнопки «Открыть».

Выбор каталога

Эта функция аналогична функции askopenfilename, за исключением того, что она не используется для выбора файлов, а выбирает каталоги (папки) и возвращает путь к их файлам.

Мы выбрали папку Users на диске C, и был возвращен следующий путь к файлу.

Обязательно не включайте сюда параметр типов файлов. В конце концов, у папок нет типов файлов.

На этом статья о файловом диалоге Python Tkinter заканчивается. Предложения и вклады для CodersLegacy более чем приветствуются. Любые вопросы по вышеуказанному материалу можно задать в разделе комментариев ниже.

Вернитесь к основной статье Tkinter, чтобы узнать о других замечательных виджетах!

сообщить об этом объявлении

tkinter.simpledialog — стандартные диалоги ввода Tkinter¶

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

tkinter.simpledialog. askfloat ( title , prompt , ** kw ) ¶ tkinter.simpledialog. askinteger ( title , prompt , ** kw ) ¶ tkinter.simpledialog. строка запроса ( название , приглашение , ** квт ) ¶

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

класс tkinter.simpledialog. Диалоговое окно ( parent , title = None ) ¶

Базовый класс для настраиваемых диалоговых окон.

body ( master ) ¶

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

buttonbox ( ) ¶

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

tkinter.filedialog — диалоги выбора файлов¶

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

Встроенные диалоговые окна загрузки/сохранения¶

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

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

Описанные ниже функции при вызове создают модальное диалоговое окно с естественным внешним видом, ждут выбора пользователя, а затем возвращают выбранное значение (значения) или None вызывающему объекту.

tkinter.filedialog. askopenfile ( mode = 'r' , ** options ) ¶ tkinter.filedialog. askopenfiles ( mode = 'r' , ** варианты ) ¶

Приведенные выше две функции создают диалоговое окно "Открыть" и возвращают открытые файловые объекты в режиме только для чтения.

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

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

tkinter.filedialog. askopenfilename ( ** options ) ¶ tkinter.filedialog. askopenfilenames ( ** варианты ) ¶

Эти две функции создают диалоговое окно "Открыть" и возвращают выбранные имена файлов, которые соответствуют существующим файлам.

tkinter.filedialog. проситсохранитьимя_файла ( ** варианты ) ¶

Создать диалоговое окно "Сохранить как" и вернуть выбранное имя файла.

tkinter.filedialog. askdirectory ( ** варианты ) ¶

класс tkinter.filedialog. Открыть ( master = None , ** options ) ¶ class tkinter.filedialog. Сохранить как ( master = None , ** варианты ) ¶

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

Удобные занятия

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

класс tkinter.filedialog. Каталог ( master = None , ** варианты ) ¶

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

Класс FileDialog должен быть подклассом для пользовательской обработки событий и поведения.

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

cancel_command ( event = None ) ¶

Инициировать закрытие диалогового окна.

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

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

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

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

filter_command ( event = None ) ¶

Отфильтровать файлы по каталогу.

Получить текущий фильтр файлов.

Получить текущий выбранный элемент.

go ( dir_or_file = os.curdir , pattern = '*' , default = '' , key = None< /em> ) ¶

Визуализация диалогового окна и запуск цикла событий.

Выйти из диалогового окна, возвращающего текущий выбор.

Выход из диалогового окна, возвращающего имя файла, если оно есть.

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

Обновить текущий выбор файла до файл.

класс tkinter.filedialog. LoadFileDialog ( master , title = None ) ¶

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

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

класс tkinter.filedialog. SaveFileDialog ( master , title = None ) ¶

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

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

В этой главе мы узнаем, как использовать диалоги по умолчанию, позволяющие пользователю выбирать входные и выходные файлы.

Выбор входного файла

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

Первый шаг — создать функцию обратного вызова:

Затем мы подключаем его к событию нажатия кнопки:

Теперь мы можем создать диалог внутри обратного вызова, который будет представлен пользователю при нажатии кнопки inputFileButton:

В качестве аргументов мы передаем родительский виджет (окно), заголовок, который появится в строке заголовка диалогового окна, текущий каталог и фильтр, который ограничивает поддерживаемые файлы файлами *.kicad_pcb.После закрытия диалогового окна функция вернет путь к выбранному файлу, а также фильтр, соответствующий этому файлу.

Если пользователь отменит диалоговое окно, будет возвращена пустая строка. Мы должны проверить это, чтобы отбросить этот ввод. Как только мы узнаем, что путь к файлу не пуст, мы помещаем его в inputFileLineEdit:

Выбор выходного файла

Когда пользователь нажимает кнопку "Экспорт", должно появиться диалоговое окно, позволяющее ему выбрать выходной файл. Для этого мы снова создадим функцию обратного вызова, связанную с exportButton.

В рамках этого обратного вызова мы будем использовать другое диалоговое окно по умолчанию, позволяющее выбрать выходной файл:

Мы добавим еще одну проверку, чтобы убедиться, что файл имеет правильное расширение:

Дополнительно: диалоговое окно подтверждения перезаписи

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

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

Обычное использование диалогового окна открытия файла:

Типичное использование диалогового окна сохранения файла несколько проще:

Этот класс поддерживает следующие стили:

wx.FD_DEFAULT_STYLE : эквивалентно FD_OPEN .

wx.FD_OPEN : это открытый диалог; обычно это означает, что метка кнопки диалогового окна по умолчанию — «Открыть». Нельзя сочетать с FD_SAVE .

wx.FD_SAVE : Это диалоговое окно сохранения; обычно это означает, что метка кнопки диалогового окна по умолчанию — «Сохранить». Нельзя сочетать с FD_OPEN .

wx.FD_OVERWRITE_PROMPT : Только для диалога сохранения: запрашивать подтверждение, если файл будет перезаписан. Этот стиль всегда включен в wxOSX и не может быть отключен.

wx.FD_NO_FOLLOW : указывает диалоговому окну вернуть путь и имя файла выбранного файла ярлыка, а не его цель, как это делается по умолчанию. В настоящее время этот флаг реализован только в wxMSW и wxOSX (где он предотвращает разрешение псевдонимов). Неразыменованный путь ссылки всегда возвращается, даже без этого флага, в Unix, поэтому его использование ничего не дает. Этот флаг был добавлен в wxWidgets 3.1.0.

wx.FD_FILE_MUST_EXIST : Только для открытого диалога: пользователь может выбирать только те файлы, которые действительно существуют. Обратите внимание, что в macOS диалоговое окно файла со стилем FD_OPEN всегда ведет себя так, как если бы этот стиль был указан, потому что невозможно выбрать файл, который не существует, из стандартного диалогового окна файла macOS.

wx.FD_MULTIPLE : Только для открытого диалога: позволяет выбрать несколько файлов.

wx.FD_CHANGE_DIR : изменить текущий рабочий каталог (когда диалоговое окно закрыто) на каталог, в котором находятся файлы, выбранные пользователем.

wx.FD_PREVIEW : показать предварительный просмотр выбранных файлов (в настоящее время поддерживается только wxGTK).

wx.FD_SHOW_HIDDEN : Показать скрытые файлы. Этот флаг был добавлен в wxWidgets 3.1.3

Все реализации wx.FileDialog предоставляют фильтр с подстановочными знаками. Если ввести имя файла, содержащее подстановочные знаки (,?) в текстовом элементе имени файла, и нажать кнопку «ОК», отобразятся только те файлы, которые соответствуют шаблону. Подстановочный знак может быть спецификацией для нескольких типов файлов с описанием для каждого, например:

Следует отметить, что поддержка подстановочных знаков в родном диалоговом окне файла Motif весьма ограничена: поддерживается только один тип файла, и он отображается без описательного теста; «Файлы BMP (.bmp)|.bmp» отображаются как «x.bmp», а «файлы BMP (.bmp)|.bmp|файлы GIF (.jpg)|.jpg» и «файлы изображений|.bmp ;.jpg» являются ошибками. В Mac macOS в диалоговом окне открытия файла окно выбора фильтра по умолчанию не отображается. Вместо этого все указанные подстановочные знаки применяются одновременно: Таким образом, в приведенном выше примере отображаются все файлы bmp, gif и png. Чтобы принудительно отображать выбор фильтра, установите соответствующий параметр wx.SystemOptions перед вызовом диалога открытия файла:

Но в отличие от Windows и Unix, где выбор типа файла фильтрует только выбранные файлы, в Mac macOS даже в этом случае в диалоговом окне отображаются все файлы, соответствующие всем типам файлов. Файлы, которые не соответствуют текущему выбранному типу файлов, выделены серым цветом и недоступны для выбора.

Читайте также: