tkinter で、ファイルを選択するということをやってみます。選択したら、そのファイルのファイルパスを表示して、選択されたことを確認します。
実行結果

実際に書いたコード
import tkinter as tk
from tkinter import filedialog
# ウィジェットの作成と配置
root = tk.Tk()
root.title("ファイルパスを表示")
root.geometry("400x200")
btn = tk.Button(root, text="ファイルを選択")
btn.pack(pady=10)
filename_label = tk.Label(root, text="ファイル: 未選択")
filename_label.pack(pady=10)
# コールバック関数の定義
def check_bom():
path = filedialog.askopenfilename(filetypes=[("All files", "*.*")])
if not path:
return
filename_label.config(text=f"ファイル: {path}")
# commandを設定する
btn.config(command=check_bom)
# メインループ
root.mainloop()
コードの解説
filedialog を import する理由
from tkinter import filedialog
この1行は、 「ファイル選択ダイアログを使えるようにするため」 だけの import です。
Tkinter 本体(tkinter や tk)には、 ファイル選択ダイアログは含まれていません。
ファイル選択は 専用モジュール である filedialog が担当します。
filedialog が提供する機能
filedialog は、OS 標準のファイル選択ウィンドウを開くための関数をまとめたモジュールです。
特に重要なのは次の3つ。
askopenfilename()→ ファイルを1つ選ぶaskopenfilenames()→ 複数ファイルを選ぶaskdirectory()→ フォルダを選ぶ
このコードで使っているのは askopenfilename()。
askopenfilename() の動き
path = filedialog.askopenfilename(filetypes=[("All files", "*.*")])
この1行で、 ファイル選択ダイアログが開き、選んだファイルの絶対パスが返る という動きになります。
例: C:/Users/user/Desktop/test.txt
キャンセルされた場合は空文字 "" が返るため、 このコードのように
if not path:
return
で処理を中断します。
ファイルを選んだあとに .config() で書き換える
ファイル選択ダイアログでパスが返ってきたら、そのパスをラベルに反映します。
filename_label.config(text=f"ファイル: {path}")
この1行で起きていること
filename_labelというラベルのtextというプロパティをf"ファイル: {path}"という文字列に置き換える
つまり、 ラベルの表示内容を「選んだファイルのパス」に更新している だけです。
f文字列の役割
f"ファイル: {path}" は Python の f-string で、 { } の部分に指定した変数の中身がそのまま入ります。
例: path = "C:/test/a.txt" の場合
"ファイル: C:/test/a.txt"
という文字列に変換され、そのままラベルに表示されます。
まとめ

from tkinter import filedialogは ファイル選択ダイアログを使うための import- filedialog は Tkinter 本体とは別モジュール
- askopenfilename() がファイル選択ウィンドウを開く
- 選んだファイルの絶対パスが返る
- キャンセル時は空文字



人気ブログランキング ブログパーツ