本記事(記事カラム)には広告が含まれています。

テキストファイルをドラッグ&ドロップして内容を表示|Python 練習 15

人気ブログランキングテキスト
記事内に広告が含まれています。
人気ブログランキングテキスト

Pythonでドラック&ドロップが簡単にできるかどうか試してみたいと思いました。

テキストファイルをドラッグ&ドロップして、その内容を表示します。

ドラッグ&ドロップ(D&D) を実現するために、tkinterdnd2を使います。

DMM FX広告(差し込みタイプ)
広告(PR)|自分の投資スタイルを見つける。※タップで開閉
広告(PR)

DMM FXは、「最初の一歩を踏み出す場」として選ばれることがある

口座を開いてみた。取引してみた。思ったよりも難しかった。──そんな経験が、投資との距離感を知るきっかけになることもあります。


サービスを通じて、自分の投資スタイルを見つける。それは、確信ではなくても構いません。「試してみた」という実感が、次の選択の材料になることもあるからです。


DMM FXに関する詳細は、以下の広告(PR)リンクをご覧いただけます。


👇こちらは広告(PR)リンクバナーです

DMMFX

人気ブログランキングテキスト

実際に書いたコード

import tkinter as tk
from tkinterdnd2 import DND_FILES, TkinterDnD


def drop_file(event):
    filepath = event.data.strip("{}")  # パスの {} を除去
    try:
        with open(filepath, "r", encoding="utf-8") as f:
            text.delete("1.0", tk.END)
            text.insert(tk.END, f.read())
    except Exception as e:
        text.delete("1.0", tk.END)
        text.insert(tk.END, f"読み込みエラー: {e}")


root = TkinterDnD.Tk()
root.title("テキストファイル表示")

text = tk.Text(root, width=60, height=25)
text.pack(padx=10, pady=10)

# ドラッグ&ドロップを受け付ける設定
text.drop_target_register(DND_FILES)
text.dnd_bind("<>", drop_file)

root.mainloop()

コードの解説

1. 全体構成

TkinterDnD.Tk() で D&D 対応ウィンドウを作る
↓
Text ウィジェットを作る
↓
Text に「ファイルドロップを受け付ける」設定をする
↓
Drop イベントが来たら drop_file() が呼ばれる
↓
ファイルを読み込んで Text に表示

2. ライブラリの読み込み

import tkinter as tk
from tkinterdnd2 import DND_FILES, TkinterDnD

tkinter

Python 標準の GUI ライブラリ。

tkinterdnd2

Tkinter に ドラッグ&ドロップ機能を追加する拡張。 Tkinter 単体では D&D ができないので、これが必要。

DND_FILES

「ファイルをドロップする」という種類のイベントを扱うための定数。

TkinterDnD.Tk()

通常の tk.Tk() の代わりに使用。 これにより D&D 対応のウィンドウ になります。

3. ドロップされた時の処理

def drop_file(event):
    filepath = event.data.strip("{}")  # パスの {} を除去
    try:
        with open(filepath, "r", encoding="utf-8") as f:
            text.delete("1.0", tk.END)
            text.insert(tk.END, f.read())
    except Exception as e:
        text.delete("1.0", tk.END)
        text.insert(tk.END, f"読み込みエラー: {e}")

event.data

ドロップされたファイルのパスが入っている。 Windows では {C:/path/file.txt} のように {} が付くので削除。

✔ ファイルを開いて中身を読み込む

  • text.delete("1.0", tk.END) → テキストウィジェットを一度クリア
  • text.insert(tk.END, f.read()) → 読み込んだ内容をそのまま表示

✔ 読み込みに失敗した場合

  • ファイルがテキストでない
  • 権限がない
  • 文字コードが違う

などの時にエラーを表示。

4. ウィンドウの作成

root = TkinterDnD.Tk()
root.title("テキストファイル表示")

text = tk.Text(root, width=60, height=25)
text.pack(padx=10, pady=10)

普通の Tk() では D&D が動かないので注意。

ここにファイルの中身が表示されます。

5. ドラッグ&ドロップの設定

# ドラッグ&ドロップを受け付ける設定
text.drop_target_register(DND_FILES)
text.dnd_bind("<>", drop_file)

「このウィジェットはファイルのドロップを受け付けますよ」という宣言。

ドロップされた時に drop_file() を呼びます。

6. メインループ

root.mainloop()

GUI アプリが動き続けるためのループ。

結果

ウィンドウにテキストの内容が表示されました。

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

もしも


人気ブログランキングバナー

人気ブログランキング

人気ブログランキングテキスト