tkinterdnd2-universal 1.7.3
TkinterDnD2 is a python wrapper for George Petasis'' tkDnD Tk extension version 2
Requires Python: >=3.6

## fork

This is fork of [tkinterdnd2](https://github.com/pmgagne/tkinterdnd2) which is a python wrapper for [tkdnd](https://github.com/petasis/tkdnd)
.

### major changes
⭐️Update all platform `libtkdnd` runtime files to the latest version, 2.9.3.

⭐️Add support for Apple Silicon macOS (arm64), Linux on ARM and Windows on ARM.

```
tkdnd
├── linux-arm64
│   ├── libtkdnd2.9.3.so
│   ├── pkgIndex.tcl
│   ├── tkdnd.tcl
│   ├── tkdnd_compat.tcl
│   ├── tkdnd_generic.tcl
│   ├── tkdnd_macosx.tcl
│   ├── tkdnd_unix.tcl
│   ├── tkdnd_utils.tcl
│   └── tkdnd_windows.tcl
├── linux-x64
│   ├── libtkdnd2.9.3.so
│   ├── pkgIndex.tcl
│   ├── tkdnd.tcl
│   ├── tkdnd_compat.tcl
│   ├── tkdnd_generic.tcl
│   ├── tkdnd_macosx.tcl
│   ├── tkdnd_unix.tcl
│   ├── tkdnd_utils.tcl
│   └── tkdnd_windows.tcl
├── osx-arm64
│   ├── libtkdnd2.9.3.dylib
│   ├── pkgIndex.tcl
│   ├── tkdnd.tcl
│   ├── tkdnd_compat.tcl
│   ├── tkdnd_generic.tcl
│   ├── tkdnd_macosx.tcl
│   ├── tkdnd_unix.tcl
│   ├── tkdnd_utils.tcl
│   └── tkdnd_windows.tcl
├── osx-x64
│   ├── libtkdnd2.9.3.dylib
│   ├── pkgIndex.tcl
│   ├── tkdnd.tcl
│   ├── tkdnd_compat.tcl
│   ├── tkdnd_generic.tcl
│   ├── tkdnd_macosx.tcl
│   ├── tkdnd_unix.tcl
│   ├── tkdnd_utils.tcl
│   └── tkdnd_windows.tcl
├── win-arm64
│   ├── libtkdnd2.9.3.dll
│   ├── pkgIndex.tcl
│   ├── tkdnd.tcl
│   ├── tkdnd2.9.3.lib
│   ├── tkdnd_compat.tcl
│   ├── tkdnd_generic.tcl
│   ├── tkdnd_macosx.tcl
│   ├── tkdnd_unix.tcl
│   ├── tkdnd_utils.tcl
│   └── tkdnd_windows.tcl
└── win-x64
    ├── libtkdnd2.9.3.dll
    ├── pkgIndex.tcl
    ├── tkdnd.tcl
    ├── tkdnd2.9.3.lib
    ├── tkdnd_compat.tcl
    ├── tkdnd_generic.tcl
    ├── tkdnd_macosx.tcl
    ├── tkdnd_unix.tcl
    ├── tkdnd_utils.tcl
    └── tkdnd_windows.tcl

7 directories, 56 files
```

this repo forked and edited to be published to pypi so one could simply install this package
with  `pip install tkinterdnd2-universal`.

## install

```
pip install tkinterdnd2-universal
```

## usage

```python
import tkinter as tk

from tkinterdnd2 import DND_FILES, TkinterDnD

root = TkinterDnD.Tk()  # notice - use this instead of tk.Tk()

lb = tk.Listbox(root)
lb.insert(1, "drag files to here")

# register the listbox as a drop target
lb.drop_target_register(DND_FILES)
lb.dnd_bind('<<Drop>>', lambda e: lb.insert(tk.END, e.data))

lb.pack()
root.mainloop()
```
![tkinterdnd2 example usage](https://i.stack.imgur.com/jnOWd.png)


see any of the [demos](./demos) for usage examples.

# tkinterdnd2

Tkinter native drag and drop support for windows, unix and Mac OSX, both x86_64 and arm64.

## What is TkInterDnD2

[TkinterDnD2](http://tkinterdnd.sourceforge.net) is a python wrapper for George Petasis' tkDnD Tk extension version 2.

It is a domain public project.

## What is TkDnD2

[tkDnD](https://github.com/petasis/tkdnd) is a tcl/Tk extension adding native drag and drop support.

## What this repository is about

It package TkinterDnD2 and tkdnd2 into a standard python module.

When the extension is imported in python its location will be automatically added to the Tk search path.

In this project we made pre-compiled libraries from the source code of [tkDnD](https://github.com/petasis/tkdnd) repository and copy them into `tkinterdnd2/tkdnd`. The libraries used in this project are based on the latest version of tkdnd, which is 2.9.3.

## pyinstaller

If you want to use pyinstaller, you should use the `hook-tkinterdnd2.py` ( you can find this file [here](https://github.com/blacklein/tkinterdnd2-universal) ) file included. Copy it in the base directory of
your project, then:
```
pyinstaller -F -w myproject/myproject.py --additional-hooks-dir=.
```

## Thanks
[petasis/tkdnd](https://github.com/petasis/tkdnd)

[pmgagne/tkinterdnd2](https://github.com/pmgagne/tkinterdnd2)

[Eliav2/tkinterdnd2](https://github.com/Eliav2/tkinterdnd2)

[@TransparentLC](https://github.com/TransparentLC) help on hook file for pyinstaller