tkinterDnD
A nice and easy-to-use wrapper around the tkdnd package. No tcl installation, no build is required, just install and use it!
Install
The Pypi name is python-tkdnd, because tkinterDnD was already taken, but you can import the package as tkinterDnD
pip3 install python-tkdnd
or if you're using a distro like Windows 7, 10, or 11 replace pip3
with pip
Credits
Copyright (c) 2021 rdbende
Copyright (c) 2012-2020 Petasis - the tkdnd package
Copyright (c) 2020 Philippe Gagné - for Mac binaries
Copyright (c) 2017 Michael Lange - the TkinterDnD package
Little example
import tkinter as tk
from tkinter import ttk
import tkinterDnD
root = tkinterDnD.Tk()
root.title("tkinterDnD example")
stringvar = tk.StringVar()
stringvar.set('Drop here or drag from here!')
def drop(event):
stringvar.set(event.data)
def drag_command(event):
return (tkinterDnD.COPY, "DND_Text", "Some nice dropped text!")
label_1 = tk.Label(root, textvar=stringvar, relief="solid")
label_1.pack(fill="both", expand=True, padx=10, pady=10)
label_1.register_drop_target("*")
label_1.bind("<<Drop>>", drop)
label_1.register_drag_source("*")
label_1.bind("<<DragInitCmd>>", drag_command)
label_2 = ttk.Label(root, ondrop=drop, ondragstart=drag_command,
textvar=stringvar, padding=50, relief="solid")
label_2.pack(fill="both", expand=True, padx=10, pady=10)
root.mainloop()