ダイアログを使って、ファイルを複数選択する
前回は、ダイアログを使ってファイルを選択するとだいして、1つのファイルを選択する方法をやってみました。
今回は、複数のファイルを選択する方法をやってみたいと思います。
とはいっても、変更する部分は3か所のみです。
1個目の変更点
filename = tkFileDialog.askopenfilemame(filetypes = fType,initialdir = iDir)
の部分を
filenames = tkFileDialog.askopenfilemames(filetypes = fType,initialdir = iDir)
と変更。どこが変わったかというと、
askopenfilemame ⇒ askopenfilemames
とお尻にsがついて複数形になった所。
2個目の変更点
初めの変数名
filename ⇒ filenames
3個目の変更点
関数からプログラムに返すreturnのあとを
filename ⇒ filenames
と変更したただけです。
2個目の変更部分は変えなくてもいいのですが、のちのちコードを見て複数選択しているのか分かりやすくするために変更しました。
3個目の変更点は、2個目の変更で変数名を変更しているので、その変数名の変更です。
コード
前回のコードで複数ファイルの選択をすると、DICOM画像を読み込む際に、複数のファイルを指定してしまいエラーが返ってきてしまうので、今回は選択したファイルのパスを表示することとしました。
それでは、コードを以下に示します。
# -*- coding: utf-8 -*-
import tkinter # tkinterをインポート
from tkinter import filedialog as tkFileDialog
# tkinterのfiledialogをインポート
def fileselect():
root = tkinter.Tk() # tkinterのインスタンスを生成
root.withdraw() # この一文が無いと謎の黒いウインドウが出てくるらしい
fTyp = [('', '*')] # ダイアログに表示するファイル種類を指定。
# 今回は指定なし
# fTyp=[('テキストファイル','*.txt')]
# 上記の様にすればテキストファイルのみに絞れる。
# ()を足していくことで複数指定することも可能。
iDir = 'C:/Desktop' # ダイアログが開くディレクトリを指定
# 今回はデスクトップ
############################# ↓ askopenfilenamesとsを付けただけ。######
filenames = tkFileDialog.askopenfilenames(filetypes=fTyp, initialdir=iDir)
return filenames # 選択ファイルの絶対パスを返します。
fname = fileselect() # fileselectの最後returnで返されたものをfnameに格納
print(fname) #選択したファイルのパスが表示される。
ファイルを選択する際はShiftキーを押しながらクリックしてください。
ファイルを複数選択と言っても、単一のファイルでも使えるので正直このコードさえあれば十分かなと思います。
これは非常に便利なコードとなりますので是非とも試してみてください。
環境
- windows10
- python3.6.1
- Anaconda custom(64-bit)
- PyCharm2018.3.3(Communication Edition)