PythonのGUIライブラリであるtkinterを使用して、ファイルのドラッグ&ドロップ機能を実装する方法を解説します。

tkinterでのドラッグ&ドロップ

まずは、tkintertkinterdnd2をインストールします。以下のコマンドでインストールできます。

conda create -n dev39 python=3.9 pyinstaller
conda activate dev39
pip install tkinterdnd2

次に、ドラッグ&ドロップ機能を持つGUIアプリケーションを作成します。以下に、作成したコードを記載します。

import tkinter as tk
from tkinterdnd2 import DND_FILES, TkinterDnD

class MyApp(TkinterDnD.Tk):
    def __init__(self):
        super().__init__()

        ## ウィンドウサイズ
        width = 300
        height = 100
        self.geometry(f'{width}x{height}')
        self.minsize(width, height)
        self.maxsize(width, height)
        self.title(f'DnD')

        ## フレーム
        self.frame_drag_drop = frameDragAndDrop(self)

        ## 配置
        self.frame_drag_drop.grid(column=0, row=0, padx=5, pady=5, sticky=(tk.E, tk.W, tk.S, tk.N))
        self.columnconfigure(0, weight=1)
        self.rowconfigure(0, weight=1)

class frameDragAndDrop(tk.LabelFrame):
    def __init__(self, parent):
        super().__init__(parent)
        self.textbox = tk.Text(self)
        self.textbox.insert(0.0, "Drag and Drop")
        self.textbox.configure(state='disabled')

        ## ドラッグアンドドロップ
        self.textbox.drop_target_register(DND_FILES)
        self.textbox.dnd_bind('<<Drop>>', self.funcDragAndDrop)

        ## スクロールバー設定
        self.scrollbar = tk.Scrollbar(self, orient=tk.VERTICAL, command=self.textbox.yview)
        self.textbox['yscrollcommand'] = self.scrollbar.set

        ## 配置
        self.textbox.grid(column=0, row=0, sticky=(tk.E, tk.W, tk.S, tk.N))
        self.scrollbar.grid(row=0, column=1, sticky=(tk.N, tk.S))
        self.columnconfigure(0, weight=1)
        self.rowconfigure(0, weight=1)

    def funcDragAndDrop(self, e):
        ## ここを編集してください
        message = '\\n' + e.data
        self.textbox.configure(state='normal')
        self.textbox.insert(tk.END, message)
        self.textbox.configure(state='disabled')
        self.textbox.see(tk.END)

if __name__ == "__main__":
    app = MyApp()
    app.mainloop()

このコードは、ファイルをドラッグ&ドロップすると、そのファイルのパスをテキストボックスに表示するシンプルなGUIアプリケーションです。

以上で、Pythonのtkinterを使用して、ファイルのドラッグ&ドロップ機能を実装する方法について解説しました。この機能を利用することで、ユーザーが直感的にファイルをアプリケーションに取り込むことが可能になります。

tkinter でドラッグアンドドロップ! #Python – Qiita.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です