LoginSignup
5
6

More than 3 years have passed since last update.

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

Posted at

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

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

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

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

環境

Windows10 64bit
python3.7

TkinterDnD2

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

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

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

ダメでした。

TkinterDnD2のインストール

インターネットをサーフィンして、ようやくこのサイトにたどり着きました。
こちらから、なんとなく新しいほうをダウンロードしました。

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

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

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

site-packagesの場所が分からない

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

これまた私はインターネットをサーフィンしました。
コマンドプロンプトで以下のコマンドを実行することでsite-packagesへのパスを取得することができました。
ありがとう、インターネット。
ありがトンクス!

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

やはり、できない!

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

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

tkDnD2のインストール

ここから64bitに対応しているはずの「tkdnd2.8-win32-x86_64.tar.gz」をダウンロードしました。
gzファイルという見かけないタイプの圧縮でしたが、Lhaplusが簡単に解凍してくれました。
解凍すると、これまたたくさんのファイルが出てきました。

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

ドロップされたファイルのパスが獲得できた!

uma.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