>>325
パスにマルチバイト文字入れるなんてことしないYO!
念のためパス名を確認しましたが、マルチバイト文字は含まれていないです。
そもそもドロップしたときに _DndBase の _dnd_substitute が呼ばれてません。


各関数の先頭に print を入れて処理の流れを追ってみたのですが、

# root = Tk()
# require_dnd(root)
require_dnd
# app = MyApp(root)
<__main__.MyApp instance at 0xXXXXXXXX>.__init__
<__main__.MyApp instance at 0xXXXXXXXX>.__setup__
<__main__.MyApp instance at 0xXXXXXXXX>.__dnd_bindtarget__('text/plain')
<__main__.MyApp instance at 0xXXXXXXXX>.__dnd_bindtarget__('text/uri-list')
# app.mainloop()
# (終了)

……となります。mainloop に入ってからはどの関数も呼ばれてません。
ドロップしても反応無し。


むしろ
> ev.data = [ x.decode("UTF-8") for x in self.tk.splitlist(D) ]
というのを初めて見ました;
これは
ev.data = map(lambda x: x.decode("UTF-8"), self.tk.splitlist(D))
と等価……なんでしょうか。