Why it doesn't work?

作業のメモ、記録をブログに残しています。

Python tkinterでGUI -ファイルを選択する-

Python tkinterでGUI - Why it doesn't work?
続きです。
https://pythonspot.com/en/tkinter/
を参考にファイル選択画面を作成してみます。

1. 一つのファイルを選択する

#! python3
import os
import tkinter
from tkinter import filedialog

root = tkinter.Tk()
root.withdraw()
fTyp = [("Text File",".txt")]
iDir = os.path.abspath(os.path.dirname(__file__))
titleText = "Select text file(s)"
file = filedialog.askopenfilename(filetypes = fTyp, title = titleText, initialdir = iDir)
print(file)

fTypで対象とするファイルタイプを指定します。今回はテキストファイルを指定しています。全ファイルを指定するような場合には以下のように指定して下さい。

fTyp = [("All files","*.*")]

iDirには選択画面起動時のパスを指定します。
titleTextには、ダイアログに表示する文言を指定します。
上記ファイルを実行すると以下のような画面が表示されます。
f:id:zakiyamatakashi:20181022102237p:plain:w500

ファイルを選択すると戻り値としてファイルのパスが返されます。

2. 複数のファイルを選択する

複数ファイルを選択する場合には、askopenfilenames()関数を使用します。
最後の2行を以下のプログラムと置き換えて実行してみます。

files = filedialog.askopenfilenames(filetypes = fTyp, title = titleText, initialdir = iDir)
for file in files:
    print(file)

スクリーンショットは割愛しますが、複数のファイルが選択できるようになり、選択後、全ファイルのパスが表示されるはずです。

3. デイレクトリ(フォルダ)を選択する

デイレクトリ(フォルダ)を選択する場合には、askdirectory()関数を使用します。

#! python3
import os
import tkinter
from tkinter import filedialog

root = tkinter.Tk()
root.withdraw()
iDir = os.path.abspath(os.path.dirname(__file__))
titleText = "Choose directory"
dir = filedialog.askdirectory(title = titleText, initialdir = iDir)
print(dir)

これを実行するとデイレクトリ(フォルダ)を選択でき、取得したデイレクトリ(フォルダ)の情報を元にファイルを操作することができます。
とりあえず、今日はこれまで。