Python. Askopenfilename

Рейтинг: 1Ответов: 2Опубликовано: 14.04.2015

Можно ли, вызывая "askopenfilename", спрятать некоторые файлы?

К примеру, в папке находятся файлы с расширением ".jpg" и ".png", но пользователь должен видеть лишь ".png".

Ответы

▲ 3

Да. Как-то так фильтры ставятся вроде:

tkFileDialog.askopenfilename(defaultextension='.jpg',
                  filetypes=[('All files','*.*'), 
                             ('PNG pictures','*.png'), 
                             ('JPEG pictures','*.jpg')])
▲ 1

Можно использовать filetypes параметр, чтобы показывать только избранные файлы как упомянул @igumnov.

Вот самодостаточный пример для Питона 2 & 3, который печатает имя файла, выбранного пользователем, причём первоначально только png-файлы показаны:

#!/usr/bin/env python
import os
try:
    from Tkinter import Tk
    from tkFileDialog import askopenfilename
except ImportError: # Python 3
    from tkinter import Tk
    from tkinter.filedialog import askopenfilename

root = Tk()
root.withdraw() # hide the window
filename = askopenfilename(
    parent=root,
    title='Images',
    initialdir=os.path.expanduser(u'~/Pictures'),
    filetypes=[('PNG images', '.png'), ('JPEG images', '.jpg')])
root.destroy()
print(filename)