pythonmacostkinterfiledialog

Add multiple extensions in one filetypes mac - tkinter/filedialog/askopenfilename


I am trying to use tkinter.filedialog to choose the file in Mac.

It works fine with one filetype in this way:

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

However, I want to choose either xlsx or xls files. I searched and found a question filedialog, tkinter and opening files. I use the similar way but it does not work with Mac if I change to this:

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

How should I change to choose either xlsx or xls files in the file dialog?


Solution

  • It seems that you must separate the wildcard patterns with a space rather than ; (verified on Python 3.5.1):

    from tkinter import filedialog
    
    # add `, initialdir="..."` to set the initial directory shown in the dialog
    filedialog.askopenfilename(filetypes=[("Excel files", ".xlsx .xls")])
    

    Note:

    If the platform-dependent behaviors are instead / also linked to different tkinter versions, do let us know.


    [1] Jakub Bláha reports that "*.xlsx *.xls" didn't actually work for him in Python 3.7.4 on Windows 10 version 1903 (though I don't see the same problem); to be safe, omit the * if not needed.