PythonのGUIライブラリであるtkinter
を使用して、ファイルのドラッグ&ドロップ機能を実装する方法を解説します。
tkinterでのドラッグ&ドロップ
まずは、tkinter
とtkinterdnd2
をインストールします。以下のコマンドでインストールできます。
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
を使用して、ファイルのドラッグ&ドロップ機能を実装する方法について解説しました。この機能を利用することで、ユーザーが直感的にファイルをアプリケーションに取り込むことが可能になります。