2015/06/19(金) [n年前の日記]
#1 [python] Python + PySide、wxPythonでファイルのドラッグアンドドロップ
Windowsのエクスプローラから、Python + 何かしらで開いたウインドウに、ファイルをD&D(ドラッグアンドドロップ)して、ファイルパスを取得したいわけですよ。
昨日、Python + Tkinter でやろうとしたら、ちょっと面倒だったので、これがもし PySide (PyQt) や wxPython ならどうなるのかなと。
昨日、Python + Tkinter でやろうとしたら、ちょっと面倒だったので、これがもし PySide (PyQt) や wxPython ならどうなるのかなと。
◎ PySideの場合。 :
以下のページが参考になった。
_ファイルのドラッグ&ドロップ - 2011-08-17 - プログラミング日記
_PyQtでファイルのドラッグ&ドロップ - None is None is None
たしかにファイルパスが取得できました。
_ファイルのドラッグ&ドロップ - 2011-08-17 - プログラミング日記
_PyQtでファイルのドラッグ&ドロップ - None is None is None
たしかにファイルパスが取得できました。
◎ future指定でハマった。 :
前述ページのソースをコピペして弄ってたら、単に print filepath と書いただけでエラーが出て、なんでこんな行でエラーが出るんじゃろと首を捻ってしまったり。
コレ、最初のほうに書かれてた、
件の行は、Python 2.x も Python 3.x の文法?に従ってソースを見なさいよ、との指定で。2.x から 3.x への移行を楽にするために、こういう機能が用意されてるようで。
この場合、print_function の指定は、「print "hoge" は許さんぞ。print("hoge") で書かないと通さんぞ」という意味で。
___future__ モジュールについて - さりんじゃーのプログラミング日記
道理でエラーになるわけで…。
コレ、最初のほうに書かれてた、
from __future__ import division, with_statement, print_functionがポイントだったのですな…。
件の行は、Python 2.x も Python 3.x の文法?に従ってソースを見なさいよ、との指定で。2.x から 3.x への移行を楽にするために、こういう機能が用意されてるようで。
この場合、print_function の指定は、「print "hoge" は許さんぞ。print("hoge") で書かないと通さんぞ」という意味で。
___future__ モジュールについて - さりんじゃーのプログラミング日記
道理でエラーになるわけで…。
◎ wxPythonの場合。 :
以下のページが参考になった。
_画面上にファイルをドラッグ&ドロップすると、ファイル名が表示されるようなアプリケーションの実装 - 理想のユーザ・インターフェイスを求めて
たしかにファイルパスが取得できました。
PySide (PyQt) にしても、wxPython にしても、それぞれインストールさえしてあれば、標準で実現できるのはありがたい。Tkinter より楽ですな…。
_画面上にファイルをドラッグ&ドロップすると、ファイル名が表示されるようなアプリケーションの実装 - 理想のユーザ・インターフェイスを求めて
たしかにファイルパスが取得できました。
PySide (PyQt) にしても、wxPython にしても、それぞれインストールさえしてあれば、標準で実現できるのはありがたい。Tkinter より楽ですな…。
◎ 余談。HSPの場合。 :
_ドラッグ&ドロップしたファイル名の取得方法 (HSP)
によると、HSPでD&Dする時は Win32 API を使うことになるようで。Tkinter でもやっていたソレと同じなのだなと。
_HSP用 ドラッグ・アンド・ドロップ モジュール - 略して仮。 もあるらしいので、フツーはそういったモジュールを使うのかもしれず。
_HSP用 ドラッグ・アンド・ドロップ モジュール - 略して仮。 もあるらしいので、フツーはそういったモジュールを使うのかもしれず。
[ ツッコむ ]
以上です。