ここではTkinterにおける「filedialog」の使用例をまとめています。
この記事の対象
filedialogとは?

filedialogとはファイルを選択することが可能になるtkinterのパッケージです。
ファイルを開く、保存する場合に使用するものです。
基本的な型
フォルダディレクトリ参照
filedialog.askdirectory()
フォルダのディレクトリを取得したい場合に使用します。
ファイルディレクトリ参照
filedialog.askopenfilename()
ファイルのディレクトリを取得したい場合に使用します。
ファイル読み込み
filedialog.askopenfile()
ファイル読み込みしたい場合に使用します。
ファイル保存
filedialog.asksaveasfilename()
保存先のディレクトリを取得したい場合に使用します。
オプションは以下の通りです。
Option | 内容 |
parents | ダイアログをその上に表示するウィンドウ |
title | ウィンドウのタイトル |
initialdir | 最初に表示するディレクトリ |
nitialfile | ダイアログを表示した際に選択するファイル |
filetypes | (ラベル, パターン) のタプルからなるシーケンスで、’*’ が利用できる |
defaultextension | ファイルに追加するデフォルトの拡張子 (保存ダイアログ向け) |
multiple | 真の場合、複数要素の選択を許可 |
ディレクトリの参照
from tkinter import *
import tkinter as tk
from tkinter import filedialog
#1---ボタンクリック
def btn_click():
dirname = filedialog.askdirectory() #askdirectory
if len(txt.get()) >= 1 :
txt.delete(0, tk.END)
txt.insert(tk.END,dirname)#txtへの插入
#2---画面生成
root = Tk()
root.title("Test")
root.configure()
root.geometry("640x395")
#3---entry作成
xt = tk.Entry(width = 65, bg = "#FAF8EC")
txt.place(x=10, y=10)
#4---ボタン作成
button = Button( text = "参照", command = btn_click)
button.pack(expand=True, anchor=tk.CENTER)
root.mainloop()
1の部分ではボタンをクリックしたときの処理を関数化したものです。内容としては、entryに何かしら文字列があったら削除して、pathを書き込むというものです。
entryに文字列があるかどうかは「get()」を用いて取得しています。
書き込む場合は、「insert()」を用います。引数に位置と書き込む内容を指定します。
【結果】

ファイルを読込んで出力
from tkinter import *
import tkinter as tk
from tkinter import scrolledtext
from tkinter import filedialog
#2---書込み
def btn_click():
test = scrolledtext.ScrolledText(padx=20, pady=25, cursor='arrow', wrap=tk.WORD, font=('Helvetica', '12'))
dirname = filedialog.askopenfile()
text = dirname.read()
test.insert(tk.END,text)
test.pack(fill=tk.BOTH, expand=1)
#1---画面生成
root = Tk()
root.title("Test")
root.configure()
root.geometry("640x395")
button = Button( text = "参照", command = btn_click)
button.pack(expand=True, anchor=tk.N)
root.mainloop()
上記のプログラムは、任意のファイルを読込んで、「ScrolledText」で出力する内容になっています。ScrolledTextについては以下をご参照下さい。
それでは解説になります。
#1---画面生成
root = Tk()
root.title("Test")
root.configure()
root.geometry("640x395")
button = Button( text = "参照", command = btn_click)
button.pack(expand=True, anchor=tk.N)
1の部分では、画面を生成しています。次にボタンを生成しています。ボタンを押したら実行する関数を指定しています。
#2---書込み
def btn_click():
test = scrolledtext.ScrolledText(padx=20, pady=25, cursor='arrow', wrap=tk.WORD, font=('Helvetica', '12'))
dirname = filedialog.askopenfile()
text = dirname.read()
test.insert(tk.END,text)
test.pack(fill=tk.BOTH, expand=1)
2の部分では、ボタンをクリックした際の関数になります。最初にScrolledTextを作成しています。次に「askopenfile」でファイル読込みをしています。読込んだ内容はinsertで挿入しています。
【結果】
