Tkinter のファイルを開くダイアログ

tkinter の filedialog を利用すると、ファイルを選択するファイル選択用のポップアップが利用できます。

Tkinter Open file dialog

tkinter では filedialog.askopenfile または filedialog.askopenfilename によって、 ファイル選択ダイアログを表示することができます。

前者の filedialog.askopenfile では戻り値として File オブジェクトが返ります。

filedialog.askopenfilename では戻り値として選択されたファイル名が文字列として返ります。

from tkinter import *
from tkinter import filedialog
from tkinter import ttk


def button1_clicked():
    file = filedialog.askopenfile(initialdir='~/')
    if file:
        v1.set(file.name)
        contents = file.read()
        print(contents)
        file.close()
    

def button2_clicked():
    file_name = filedialog.askopenfilename(initialdir='~/')
    if file_name:
        v2.set(file_name)


if __name__ == "__main__":
    root = Tk()
    root.title('Dialogs')
    root.columnconfigure(0, weight=1)
    root.rowconfigure(0, weight=1)

    frame = ttk.Frame(root, padding=10)
    frame.columnconfigure(0, weight=1)
    frame.rowconfigure(0, weight=1)
    frame.grid(sticky=(N, W, S, E))

    # Open File
    b1 = ttk.Button(
        frame, text='Open File', width=15,
        command=button1_clicked)
    b1.grid(row=0, column=0, sticky=(W))
    v1 = StringVar()
    l1 = ttk.Label(frame, textvariable=v1)
    l1.grid(row=0, column=1)

    # Open File
    b2 = ttk.Button(
        frame, text='Open Filename', width=15,
        command=button2_clicked)
    b2.grid(row=1, column=0, sticky=(W))
    v2 = StringVar()
    l2 = ttk.Label(frame, textvariable=v2)
    l2.grid(row=1, column=1)

    root.mainloop()

その他、同様のダイアログとして次のバリエーションがあります。

  • askopenfiles
  • askopenfilenames
  • asksaveasfilename
  • askdirectory

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Python 入門