Все разобрался я с drag and drop. Вот мой рецепт.
1. Переходим по ссылке, любезно предоставленной
slav0nic http://sourceforge.net/projects/tkdnd2. Скачаиваем tkdnd (бинарники отдельно для платформ можно отдельно не качать, так как они идут вместе tkdnd для разных платформ, как и исходники)
Распаковываем, копируем в папку tcl (в винде она находится в папке с питоном), и убеждаемся, что из Tkinter работать мы не сможем, так как tkdnd это расширение tcl/tk
3. Идем в гугл и спрашиваем у него “python wrapper for tkdnd”
Порывшись в результатах поиска, и испробовав несколько варианов, понимаем, что все запускается, но не работает :)
4. Идем в гугл опять и ищем “python wrapper for tkdnd problem” :)
5. Используя познания английского языка, выясняем что текущая версия tkdnd-2 а врапперы написаны под старую версию..
6. Ищем и находим
klappnase.bubble.org/TkinterDnD2/TkinterDnD2.html7. Пробуем и убеждаемся что все работает.
Вот пример от меня:
from TkinterDnD2 import *
from Tkinter import *
root = TkinterDnD.Tk()
class gui:
def drop(self,event):
x,y=event.x_root-root.winfo_rootx(),event.y_root-root.winfo_rootx()
self.canvas.create_text(x,y,text=str(event.data))
def __init__(self):
self.canvas=Canvas(root,width=600,height=400)
self.canvas.pack()
self.canvas.drop_target_register('*')
self.canvas.dnd_bind('<<Drop>>', self.drop)
a=gui()
root.mainloop()
запускаем, и перетягиваем мышкой на окно тексты, файлы :)