tkinter
filedialog
を使用してMacでファイルを選択しようとしています。
これは、次のように1つのファイルタイプで正常に機能します。
_filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx)])
_
ただし、xlsx
またはxls
ファイルのいずれかを選択したいと思います。検索して質問を見つけました filedialog、tkinter、ファイルを開く 。私は同様の方法を使用しますが、これに変更するとMacでは機能しません。
filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx; *.xls")])
ファイルダイアログでxlsx
またはxls
ファイルを選択するにはどうすればよいですか?
ワイルドカードパターンは、;
(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")])
注意:
"*.xlsx *.xls"
も機能しますが(少なくともWindowsとmacOSでは)、最初の*
は必要ありません。[1].*
または*.*
が機能するか(フィルターなし)は、プラットフォームに依存しているようです。 省略filetypes
は、その場合のより良いオプションです。foo.txt
やfoo*.txt
など)はプラットフォームに依存しているように見えます:Windowsでは、これらは*
(*foo.txt
および*foo*.txt
)を付加して機能しますが、macOSでは何にも一致しないようです。プラットフォームに依存する動作が代わりに/異なるtkinterバージョンに対応している場合は、お知らせください。
[1] JakubBláha は、Windows10バージョン1903のPython 3.7.4では"*.xlsx *.xls"
が実際には機能しなかったと報告しています(ただし、同じ問題が発生します);安全のため、不要な場合は*
を省略してください。
少なくともWindowsでは、複数のファイルタイプを開くことができるようにしたいが、常に一度に1つだけ開くことができるようにする場合、コードは次のようになります。
filedialog.askopenfilename(filetypes=[("Excel file","*.xlsx"),("Excel file 97-2003","*.xls")])
両方のファイルタイプを切り替えずに同時に選択できるようにするには、同じ名前にする必要があります。
filedialog.askopenfilename(filetypes=[("Excel file","*.xlsx"),("Excel file", "*.xls")])