filedialogを使ってみよう
tkinter.filedialogモジュールを使うと、ファイルまたはディレクトリーを選択するための簡単なダイアログを作成することができます。
今回はfiledialogの具体的な使い方をみていきましょう。
filedialogのインポート
filedialogのメソッドを使うには、tkinter.filedialogをインポートする必要があります。
import tkinter.filedialog
filedialogの書式
filedialogには、以下のメソッドがあります。
askopenfile()やasksaveasfile()のmodeオプションは省略することができます。
書式 | 内容 |
tkinter.filedialog.askopenfile(mode="r" [, オプション]) | ファイルを1つ選択 ファイルのオブジェクトを返す |
tkinter.filedialog.askopenfiles(mode="r" [, オプション]) | ファイルを複数選択 ファイルのオブジェクトを返す |
tkinter.filedialog.asksaveasfile(mode="w" [, オプション]) | ファイルを保存 ファイルのオブジェクトを返す |
tkinter.filedialog.askopenfilename([オプション]) | ファイルを1つ選択 ファイルパスを返す |
tkinter.filedialog.askopenfilenames([オプション]) | ファイルを複数選択 ファイルパスを返す |
tkinter.filedialog.asksaveasfilename([オプション]) | ファイルを保存 ファイルパスを返す |
tkinter.filedialog.askdirectory([オプション]) | ディレクトリを選択 ディレクトリパスを返す |
filedialogのメソッドのオプションには、以下の種類があります。
ただし、メソッドによっては使えないものもあります。
オプション | 内容 |
parent | ダイアログの親ウィンドウ |
title | ダイアログのタイトル |
initialdir | ダイアログを開始するディレクトリー |
initialfile | ダイアログを開いたときに選択しているファイル |
filetypes | ファイルを絞り込むための「ラベル」と「パターン」 ワイルドカード(*)を指定可能 |
defaultextension | ファイル保存時に使用するデフォルトの拡張子 (asksaveasfile、asksavefilenameのみ) |
multiple | 複数ファイルを選択。True/Falseを指定 |
メモ
filedialogの詳しい使い方は、以下の公式サイトを参照してください。
filedialogの使い方
filedialogの各メソッドの使い方をみてみましょう。
1つのファイルを選択するダイアログ~askopenfile、askopenfilename
askopenfile()とaskopenfilename()は、1つのファイルを選択するダイアログです。
ここでは代表的なオプションも併せて説明します。
titleは、ダイアログの左上に表示する文言です。
initialdirは、ダイアログ画面を表示した時の初期ディレクトリーを指定します。
ディレクトリーの区切りは円マークではなくスラッシュ(/)を使います。
filetypesは、ファイルタイプと拡張子を指定してファイルを絞り込みます。
ファイルタイプの文言と拡張子をセットで指定します。
なお、拡張子を複数指定したい場合は、filetypes=[("Image File","*.png;*.jpg")]のように拡張子をセミコロン(;)で区切ります。
askopenfile()の使い方の例は、以下のようになります。
実行例
>>> tkinter.filedialog.askopenfile(title="ファイル選択", initialdir="C:/Share", filetypes=[("Text File","*.txt")])
上記コマンドを実行すると、以下のようなダイアログが表示されます。
赤枠はオプションで指定した箇所です。
ファイルを選択して「開く」ボタンを押下すると処理がプロンプトに戻り、選択したファイルのオブジェクト情報が表示されます。
実行例
<_io.TextIOWrapper name='C:/Share/aaa.txt' mode='r' encoding='cp932'>
askopenfilename()の場合は、戻り値にはファイルパスが返されます。
実行例
>>> title="ファイル選択", initialdir="C:/Share", filetypes=[("Text File","*.txt")])
C:/Share/aaa.txt
なお、以下のようなウィンドウも同時に表示されますが、これはfiledialogの親ウィンドウです。
この画面を出したくない場合は、あらかじめ親ウィンドを以下の手順で非表示にしておきます。
親ウィンドウ = tkinter.Tk()
親ウィンドウ.withdraw()
実行例
main = tkinter.Tk()
main.withdraw()
ファイルを複数選択するダイアログ~askopenfiles、askopenfilenames
askopenfiles()とaskopenfilenames()は、複数のファイルを選択するダイアログです。
askopenfiles()の使い方の例は、以下のようになります。
実行例
tkinter.filedialog.askopenfiles(title="ファイル複数選択", initialdir="C:/Share", filetypes=[("Text File","*.txt")])
上記コマンドを実行すると、以下のようなダイアログが表示されます。
CtrlキーやShiftキーを押下しながらカーソルキーを使って複数のファイルを選択します。
赤枠のファイル名の欄に選択したファイルが表示されます。
ファイルを選択して「開く」ボタンを押下すると処理がプロンプトに戻り、選択した複数のファイルのオブジェクト情報が表示されます。
実行例
[<_io.TextIOWrapper name='C:/Share/aaa.txt' mode='r' encoding='cp932'>, <_io.TextIOWrapper name='C:/Share/bbb.txt' mode='r' encoding='cp932'>, <_io.TextIOWrapper name='C:/Share/ccc.txt' mode='r' encoding='cp932'>]
askopenfilenames()の場合は、戻り値にはファイルパスが返されます。
実行例
('C:/Share/aaa.txt', 'C:/Share/bbb.txt', 'C:/Share/ccc.txt')
ディレクトリーを指定するダイアログ~askdirectory
askdirectory()は、ディレクトリーを選択するダイアログです。
askdirectory()の使い方の例は、以下のようになります。
実行例
tkinter.filedialog.askdirectory(title="ディレクトリー", initialdir="C:/")
上記コマンドを実行すると、以下のようなダイアログが表示されます。
ディレクトリーを選択して「フォルダーの選択」ボタンを押下すると処理がプロンプトに戻り、選択したディレクトリーパスが表示されます。
実行例
'C:/Program Files (x86)'
ファイルを保存するダイアログ~asksaveasfile、asksaveasfilename
asksaveasfile()とasksaveasfilename()は、ファイルを保存するダイアログです。
asksaveasfile()の使い方の例は、以下のようになります。
実行例
tkinter.filedialog.asksaveasfile(title="ファイル保存", initialdir="C:/Share", defaultextension="txt")
以下のようなダイアログが表示されます。
ファイル名欄にファイル名を入力して、「保存」ボタンを押下すると、defaultextensionオプションで指定した拡張子が自動的に付与されてファイルが保存されます。
実行例
<_io.TextIOWrapper name='C:/Share/ddd.txt' mode='w' encoding='cp932'>
asksaveasfilename()の場合は、戻り値にはファイルパスが返されます。
実行例
'C:/Share/ddd.txt'