Native drag & drop capabilities in tkinter. The tkinterDnD package is a nice and easy-to-use wrapper around the tkdnd tcl package.
Project description
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 # Importing the tkinterDnD module
# You have to use the tkinterDnD.Tk object for super easy initialization,
# and to be able to use the main window as a dnd widget
root = tkinterDnD.Tk()
root.title("tkinterDnD example")
stringvar = tk.StringVar()
stringvar.set('Drop here or drag from here!')
def drop(event):
# This function is called, when stuff is dropped into a widget
stringvar.set(event.data)
def drag_command(event):
# This function is called at the start of the drag,
# it returns the drag type, the content type, and the actual content
return (tkinterDnD.COPY, "DND_Text", "Some nice dropped text!")
# Without DnD hook you need to register the widget for every purpose,
# and bind it to the function you want to call
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)
# With DnD hook you just pass the command to the proper argument,
# and tkinterDnD will take care of the rest
# NOTE: You need a ttk widget to use these arguments
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()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file python-tkdnd-0.2.1.tar.gz.
File metadata
- Download URL: python-tkdnd-0.2.1.tar.gz
- Upload date:
- Size: 157.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dbce480c1ab5923075aa6fa02e8ae85b984886dfaf20c82d20d78420ad19451b
|
|
| MD5 |
081d6b466c6b3f09c9a67ad12af7f48d
|
|
| BLAKE2b-256 |
3abf06781b8ecdff505d021996fab9ebb8cc18606576f0ed34d0d6d75b337b6f
|
File details
Details for the file python_tkdnd-0.2.1-py3-none-any.whl.
File metadata
- Download URL: python_tkdnd-0.2.1-py3-none-any.whl
- Upload date:
- Size: 172.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e476f02c5a9f36361f494cb9e6bc4515790e224a22b4d14b8fbd90d7c1fc0e81
|
|
| MD5 |
2a2e56ff566e0a4e07c0f7924efcce70
|
|
| BLAKE2b-256 |
952850130cd6667454c7c04100e8697e70c03428c8a672ba0f60601b6a6f1e02
|