ダイアログを使って、ファイルを複数選択する。

Python

ダイアログを使って、ファイルを複数選択する

前回は、ダイアログを使ってファイルを選択するとだいして、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)



タイトルとURLをコピーしました