Это верно. Фактическое диалоговое окно файла в OSX не поддерживает выбор типа файла. Небольшое количество приложений расширяет его, чтобы добавить эту возможность, но Tk нет, как и многие другие приложения. Это потому, что в руководстве по стилю ОС указано, что этого не делать.
Если вам действительно нужен выбор типа файла, используйте реализованную в скриптах версию диалогов; они кроссплатформенные (и то, что всегда используется на платформах Unix / X11). К сожалению, они не специально сопоставлены с вызовами Python; вам нужно будет использовать необработанный интерфейс вызова. (См. Как вызывать процедуру TCL с использованием Python , чтобы узнать, как работает метод .tk.eval
; он плохо документирован, но это именно то, что вам нужно.)
# Root context object
root = tkinter.Tk()
# The filetypes *IN TCL FORMAT*
filetypes = "{{csv files} *.csv} {{all files} *}"
# The actual call; note that that that's a very unusual command name by Tcl standards!
#
filename = root.tk.eval('::tk::dialog::file:: open -filetypes {' + filetypes + '}')
# Fix up the result; empty string means "no file selected"
if filename == "":
filename = None
Извините, это грязно, и определенно не будет выглядеть или чувствовать себя нативным в OSX, но, по крайней мере, должно работать ...