Up

ファイル名の取得・設定ダイアログウィンドウ

Tkinter/Python

 

プログラムの実行中に入力用ファイル名や出力用ファイル名の設定を行うとき、これらのファイル名をダイアログウィンドウを表示して設定するスクリプトを作成してみた。モジュールTkinterの機能を用いるが、Tkinterのウィンドウを非表示とし、名前の設定後、ダイアログウィンドウが閉じられたら非表示のTkinterのオブジェクトを削除するために、ファイル名の設定用クラス型を用意して、Tkinterのウィンドウの処理をこのクラス型で行った。作成したスクリプトはリスト1のものである。

 

リスト1 ファイル名の取得・設定用クラス

import tkinter as tk

from tkinter import filedialog as fd

 

class getfilename:

    def __init__(self):

        self.rt = tk.Tk()

        self.rt.withdraw()

 

    def askopenfilename(self, msg = 'Open File Name ?'):

        flnm = fd.askopenfilename(title = msg)

        self.rt.destroy()

        return flnm

 

    def asksaveasfilename(self, msg = 'SaveAs File Name ?'):

        flnm = fd.asksaveasfilename(title = msg)

        self.rt.destroy()

        return flnm

 

fn = getfilename().askopenfilename(msg = 'Input File Name ?')

print(fn)

 

fn = getfilename().asksaveasfilename(msg = 'Output File Name ?')

print(fn)

 

クラス型getfilenameがファイル名取得・設定用クラス型である。初期化関数__init__において、tkinterTk型オブジェクトをself.rtに設定して、スクリプトで管理できるようにしている。入力用ファイル名は関数askopenfilenameで行い、出力用ファイル名の設定は関数asksaveasfilenameで行っている。出力用ファイル名は設定しても、設定したファイル名が文字列として返されるだけでファイルの操作が行われるわけではない。

リスト1を実行すると、まず図1のダイアログが表示される。

図1

 

入力用ファイル名を設定して「開く」ボタンをクリックすると、次に

 

fn = getfilename().asksaveasfilename(msg = 'Output File Name ?')

 

が実行されて、図2のダイアログウィンドウが表示される。

図2

 

保存ファイル名を設定して「保存」ボタンをクリックする。

「保存」ボタンのクリック後、プログラムは実行終了となる。端末の出力は、次のようになっている。

 

S:/To2019/z_version/SampleFiles/Sample2VarNorm.py

S:/To2019/z_version/SampleFiles/SampleResults.txt

 

ダイアログウィンドウで設定したファイル名は、次のスクリプト

 

fn = getfilename().askopenfilename(msg = 'Input File Name ?')

print(fn)

 

fn = getfilename().asksaveasfilename(msg = 'Output File Name ?')

print(fn)

 

の実行により、関数askopenfilenameおよびasksaveasfilenameの値として返されていることが分かる。

 

 

Up