5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

tkinterにファイルをドロップしてそのパスを取得したい【TkinterDnD2】

Posted at

#できそうな気がするんです。

蛇口です。普段はエンジニアでも何でもありません。
特に必要というわけではないんですが巷にあるウィンドウって
たいていファイルをドロップすると、それに対して何かしてくれている気がするんです。

Tkinterも見た目からして「私、できますよ」という顔をしていたんですが
まあ普通にファイルをドロップしても何も起きないわけですね。

今回、Qiitaには載ってなかったので(見つけらなかっただけかもしれませんが)
今後同じ手間を踏む必要がないようにこちらに投稿しておくことにしました。

##環境
Windows10 64bit
python3.7

##TkinterDnD2
どうやら、Tkinterに加えて__TkinterDnD2__というものを使うことで
ドロップされたファイルを受け取ることができるようになるそうです。

じゃあ、いつものように「pip install」すればいいんじゃない?と私は考えました。

ERROR: Could not find a version that satisfies the requirement tkinterdnd2 (from versions: none)
ERROR: No matching distribution found for tkinterdnd2```

ダメでした。

##TkinterDnD2のインストール
インターネットをサーフィンして、ようやくこのサイトにたどり着きました。
[こちら](https://sourceforge.net/projects/tkinterdnd/files/TkinterDnD2/)から、なんとなく新しいほうをダウンロードしました。

ダウンロードしたものを解凍すると、なんと、たくさんファイルがあるではありませんか。
これは混乱です。どうすればいいんでしょうか。

これまたインターネットをサーフィンすると
__「自分のsite-packagesフォルダにTkinterDnD2フォルダを置く」__ということでした。

解凍されて出てきたものの中に、確かに__「TkinterDnD2」__というフォルダがありました。
なるほど、これをsite-packagesに移動させて…。
というところで手が止まりました。
__あれsite-packagesって、どこにあるんだっけ?__

##site-packagesの場所が分からない
site-packagesって、なんとなくpip installとかで手に入れる者たちが置かれる場所だと記憶しています。
そして実際に何回か行ったこともあるんですが…、正直どこか思い出せませんでした。

これまた私はインターネットをサーフィンしました。
コマンドプロンプトで以下のコマンドを実行することでsite-packagesへのパスを取得することができました。
ありがとう、インターネット。
[ありがトンクス!](https://qiita.com/jaguti/items/be36b6a4f0260be2d044)

1.Windowsキー+Rで「ファイルを指定して実行」を起動
2.cmdと入力して「OK」
3.python -c "import site; print (site.getsitepackages())"

##やはり、できない!
苦労してようやくドラッグアンドドロップができるようになったと思いましたが
普通にエラーになってできませんでした。
どうやら、TkinterDnD2のほかに__tkDnD2__というものが必要のようです。

tkって略称っぽいけど、どうやらこの2つは全くの別物のようです。
JavaとJavaScriptは全然別物だよとか、そういうのはもうやめてほしいです。

##tkDnD2のインストール
[ここ](https://sourceforge.net/projects/tkdnd/files/Windows%20Binaries/TkDND%202.8/)から64bitに対応しているはずの「tkdnd2.8-win32-x86_64.tar.gz」をダウンロードしました。
gzファイルという見かけないタイプの圧縮でしたが、Lhaplusが簡単に解凍してくれました。
解凍すると、これまたたくさんのファイルが出てきました。

今回は以下のフォルダに、すべてをコピーさせるそうです。
__(略)\Programs\Python\Python37\tcl\tkdnd__
tclまでは既に存在していました。
tkdndはありませんでしたので、自分で作成しました。

##ドロップされたファイルのパスが獲得できた!
![uma.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311431/2a6ec25c-9ea0-24b5-b604-15074789b45f.gif)
今回は動画のパスを取得して、キャンバスに描写してみました。
今のままだと何の役にも立ちそうにないですが、何かとに組み合わせることには意味がありそうです。
5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?