Добавить несколько расширений в один тип файла mac - tkinter/filedialog/askopenfilename

Я пытаюсь использовать tkinterfiledialog выбрать файл в Mac.

Это прекрасно работает с одним типом файла следующим образом:

filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx)])

Тем не менее, я хочу выбрать либо xlsx или же xls файлы. Я искал и нашел вопрос filedialog, tkinter и открытие файлов. Я использую аналогичный способ, но он не работает с Mac, если я перехожу на это:

filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx; *.xls")])

Как я должен изменить, чтобы выбрать либо xlsx или же xls файлы в диалоге файлов?

4 ответа

Решение

Кажется, что вы должны отделить шаблоны подстановки пробелом, а не ; (проверено на Python 3.5.1):

from tkinter import filedialog

filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx *.xls")])

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

filedialog.askopenfilename(filetypes=[("Excel file","*.xlsx"),("Excel file 97-2003","*.xls")])

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

filedialog.askopenfilename(filetypes=[("Excel file","*.xlsx"),("Excel file", "*.xls")])

У меня несколько расширений в Windows 10 работают так. Например, поиск файлов Python.

      py_exts = r"*.py  *.py3 *.pyc  *.pyo  *.pyw  *.pyx  *.pyd  *.pxd  *.pyi  *.pyi  *.pyz  *.pywz *.rpy  *.pyde *.pyp  *.pyt  *.xpy  *.ipynb"  

filename = filedialog.askopenfilename(initialdir=SEEN,
                                              title="Select a File",
                                              filetypes=(("video files",
                                                          video_exts),
                                                         ("python files", py_exts),
                                                         ("all files",
                                                          "*.*")))
      filedialog.askopenfilename(initialdir="/",title="Select an Image",filetypes=[("PNG","asterisk.png"),("JPG","asterisk.jpg"),("JPEG","asterisk.jpeg"),("ICON","asterisk.ico")])

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

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

Другие вопросы по тегам