【Python】Tkinterを使用してファイルをダイアログボックスで選択する方法を紹介!

  • 2019年10月25日
  • 2020年4月25日
  • Python

こんにちは!

皆さんは、Pythonでファイルを扱う時にどのようにファイルを指定していますか?
多くの方がファイルパスを指定してファイルを選択することが多いと思います。

しかし、その場合は、ファイルがどこにあるかを確認しなければなりません。
また、ファイルの場所を移動した場合には、ファイルパスが変わるので、プログラムを変更しなければなりません。

そこで、ダイアログボックスでファイルを選択するようにすると、ファイルの場所を探すことができ、ファイルの場所を移動してもプログラムの変更の必要はありません。

ダイアログボックスとは以下の画像のようなものです。

ダイアログボックス

今回の記事では、Tkinterを使用して、ファイルの指定をダイアログボックスで行う以下の方法を紹介します。

  • ファイルの保存先をダイアログボックスで選択する方法
  • 読み込むファイルをダイアログボックスで選択する方法

Tkinterモジュール

Tkinterモジュールとは

Tkというグラフィカルなユーザーインターフェイスを作成するためのツールキットがあります。

TkinterはそのTkをPythonで扱うためのモジュールです。

今回は、Tkinterモジュールの一部の機能を使用して、ダイアログボックスの操作を行います。

Tkinterモジュールのインストール方法

Tkinterモジュールは、Pythonの標準ライブラリに含まれているため、インストールは不要です。

ファイルをダイアログボックスで選択

ファイルの保存先をダイアログボックスで選択

以下のプログラムは、「Python初心者の備忘録」というテキストを、保存先をダイアログボックスで選択して、テキストファイルとして保存するプログラムです。

import tkinter as tk
import tkinter.filedialog as fd

root = tk.Tk()
root.withdraw()

file = fd.asksaveasfilename(
    initialfile = "data",
    defaultextension = ".txt",
    title = "Choose a file",
    filetypes=[("TEXT", ".txt")]
    )

data = "Python初心者の備忘録"

if file:
    with open(file, "w", encoding="utf_8") as f:
        len = f.write(data)

解説

root = tk.Tk()
root.withdraw()

この部分は、白い小さなtkアプリウインドウが開かれてしまうのを防ぐ操作です。
tkアプリウインドウはダイアログボックスを操作する上で必要ないので開かれないようにします。

file = fd.asksaveasfilename()

この部分で、ファイル保存用のダイアログボックスを開きます。
そして、選択したファイルのパスが変数fileに格納されます。

initialfile = “data”,
defaultextension = “.txt”,
title = “Choose a file”,
filetypes=[(“TEXT”, “.txt”)]

initialfileでデフォルトの書き込むファイル名指定します。
defaultextensionでデフォルトの拡張子を指定します。
titleでダイアログボックスのタイトルを指定します。
filetypesで選択可能な拡張子を指定します。

data = “Python初心者の備忘録”

テキストファイルに書き込むテキストです。

if file:
    with open(file, “w”, encoding=”utf_8″) as f:
        len = f.write(data)

ダイアログボックスでキャンセルを選択した際には、変数fileには何も代入されないため、最後のif文で確認しています。
そして最後にファイルへ書き込みます。

with文の使用法は以下の記事で紹介しているので参考にしましょう。

参考記事

こんにちは! 皆さんは「with文」というものをご存知ですか? with文は、with文を用いなくても他の書き方で書けるため、知っていても使い方は理解していない、といった方もいるかと思います。 with文はファイルのオー[…]

一緒に見る

読み込むファイルをダイアログボックスで選択

以下のプログラムは、読み込むテキストファイルをダイアログボックスで選択して、その内容を出力するプログラムです。

import tkinter as tk
import tkinter.filedialog as fd

root = tk.Tk()
root.withdraw()

file = fd.askopenfilename(
    title = "Choose a file",
    filetypes=[("TEXT", ".txt")]
)

if file:
    with open(file, "r", encoding="utf_8") as f:
        text = f.read()
        print(text)

解説

file = fd.askopenfilename()

この部分で、ファイルオープン用のダイアログボックスを開きます。
そして、選択したファイルのパスが変数fileに格納されます。

その他の部分はファイルの保存先をダイアログボックスで選択する際のプログラムとほとんど同じですね。

まとめ

今回の記事では、Tkinterを使用して、ファイルの指定をダイアログボックスで行う以下の方法を紹介しました。

  • ファイルの保存先をダイアログボックスで選択する方法
     →asksaveasfilename()を使用する
  • 読み込むファイルをダイアログボックスで選択する方法
     →askopenfilename()を使用する

ダイアログボックスを使うことで、ファイルを視覚的に選択することができるので、とても便利です。

アプリケーションなどでファイルを選択させたい場合には、ダイアログボックスがよく使われるので、それらを開発する際には、必須の知識となります。

Pythonでのダイアログボックスの操作をしっかりと覚えて、使えるようにしましょう!