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用 ドラッグ・アンド・ドロップ モジュール - 略して仮。 もあるらしいので、フツーはそういったモジュールを使うのかもしれず。
[ ツッコむ ]
#2 [python] wxPythonのGUIをデザインするツールについてメモ
wxPython だか wxPython Demo だかをインストールすると xrced というツールが一緒にインストールされるので、ソレを使えばGUIで部品の配置が出来るのだけど。他にもツールがあったはずだよなと思い出したので試してみたり。
◎ wxGladeをインストール。 :
wxGlade は、wxPythonその他のGUI部品をレイアウトできるツール。
今回、wxGlade 0.7.0 をインストールした。 _wxGlade - Browse Files at SourceForge.net から、wxGlade-0.7.0-setup.exeをDL・実行。自分は、C:\Python\wxGlade にインストールした。
配布ページに注意書きが書いてあった。
しかし…。しばらく触ってみたけど、どうもちゃんと動いてる感じがしない。Widgets を登録しても階層がおかしいというか…。
wxGlade が新しすぎて不具合があるのかなと思えてきたので、0.7.0 をアンインストール後、wxGlade-0.6.8-setup.exe をDLしてインストールしてみた。しかし 0.6.8 に至っては、Panel を置こうとしただけでエラーが出る。 おそらく、自分が手元の環境にインストールしているのが wxPython 3.0 なので、何か不整合が起きてるのかなと…。
今回、wxGlade 0.7.0 をインストールした。 _wxGlade - Browse Files at SourceForge.net から、wxGlade-0.7.0-setup.exeをDL・実行。自分は、C:\Python\wxGlade にインストールした。
配布ページに注意書きが書いてあった。
This version of wxGlade has a minor bug! wxGlade need a private directory C:\Users\<your user name>\AppData\Roaming\wxglade to store runtime information as well as log files. Unfortunatally it doesn't create this directory itself. Please create the wxglade directory manually and restart wxGlade after that.要するに、「wxGlade は、C:\Users\自分のアカウント名\AppData\Roaming\wxglade\ というフォルダがあることを前提にして動くんだけど、そのフォルダは自動で作成しないので、自分でフォルダを作った上で使ってね」という話らしい。自分も手動で該当フォルダを作成。
しかし…。しばらく触ってみたけど、どうもちゃんと動いてる感じがしない。Widgets を登録しても階層がおかしいというか…。
wxGlade が新しすぎて不具合があるのかなと思えてきたので、0.7.0 をアンインストール後、wxGlade-0.6.8-setup.exe をDLしてインストールしてみた。しかし 0.6.8 に至っては、Panel を置こうとしただけでエラーが出る。 おそらく、自分が手元の環境にインストールしているのが wxPython 3.0 なので、何か不整合が起きてるのかなと…。
◎ wxFormBuilderをインストール。 :
wxGladeの怪しい動作に嫌気がさして、他のツールを探してみた。wxFormBuilder というツールがあるらしい。試用してみる。
_wxFormBuilder - Browse /wxformbuilder-nightly/3.5.1-rc1 at SourceForge.net から、wxFormBuilder_v3.5.1-rc1.exe をDLしてインストール。C:\Python\wxFormBuilder に入れてみた。
少し触ってみたが、こちらは随分と分かりやすい気がする。予想したとおりに動いてくれるというか。凝ったレイアウトにしたいなら、こちらを使ったほうが楽かもしれない。
_wxFormBuilder - Browse /wxformbuilder-nightly/3.5.1-rc1 at SourceForge.net から、wxFormBuilder_v3.5.1-rc1.exe をDLしてインストール。C:\Python\wxFormBuilder に入れてみた。
少し触ってみたが、こちらは随分と分かりやすい気がする。予想したとおりに動いてくれるというか。凝ったレイアウトにしたいなら、こちらを使ったほうが楽かもしれない。
◎ 余談。 :
wxPython を使ったレイアウトの仕方は、「横(縦)方向にずらずら部品を並べていくコンテナを入れ子に」とか「グリッドで配置」とかそんな感じなのだけど。
部品を自由な位置に置けないのがアレだ、という意見も見かけるものの。むしろ、 Excel方眼紙大好き民族な日本人にとって相性のいいレイアウト方法だったりしないのかなと思えてきたり。ここのマス目にコレを置く、てな意識だけでレイアウトできるわけで…。
部品を自由な位置に置けないのがアレだ、という意見も見かけるものの。むしろ、 Excel方眼紙大好き民族な日本人にとって相性のいいレイアウト方法だったりしないのかなと思えてきたり。ここのマス目にコレを置く、てな意識だけでレイアウトできるわけで…。
[ ツッコむ ]
#3 [javascript] NW.js(node-webkit)とやらを少しだけ試用
Python + Tkinter、PySide、wxPython でアレコレできないかと検討するのは、
どの環境でも動かしたいという話なら、HTML5 + JavaScript で書いたほうがいいんじゃないの、今はそういう時代でしょ、てな気もしてきたわけで。
ということで、何を使ったらそういうことができるのかなと少しググってみたら、NW.js (少し前は node-webkit という名前だったらしい)とやらが目について。少し試してみようかなと。
- どうせプログラムを書くなら、Windows、Mac、Linux でも動くものを書いたほうが美味しそう。
- (LLで書いたほうが、改良したいと思った人が気楽に手を付けられるかも)
どの環境でも動かしたいという話なら、HTML5 + JavaScript で書いたほうがいいんじゃないの、今はそういう時代でしょ、てな気もしてきたわけで。
ということで、何を使ったらそういうことができるのかなと少しググってみたら、NW.js (少し前は node-webkit という名前だったらしい)とやらが目について。少し試してみようかなと。
◎ Node.js と npm をインストール。 :
NW.js とやらを使うためには、Node.js と npm とやらが必要になるらしい。
_Windows ではじめてみる Node.js | CYOKODOG
を参考にしてインストール。
_Node.js で配布されてるインストーラ、node-v0.12.4-x86.msiをDLして実行。インストール場所は C:\node\nodejs\ にした。
以下の場所に、コマンド?が入った。
バージョン確認。
対話形式でも使えるらしい。node[Enter]で対話モード。終了は Ctrl+C を2回たたくか、.exit と入力。
_Node.js で配布されてるインストーラ、node-v0.12.4-x86.msiをDLして実行。インストール場所は C:\node\nodejs\ にした。
以下の場所に、コマンド?が入った。
c:\node\nodejs\node.exe c:\node\nodejs\npm c:\node\nodejs\npm.cmd
バージョン確認。
> node -v v0.12.4
対話形式でも使えるらしい。node[Enter]で対話モード。終了は Ctrl+C を2回たたくか、.exit と入力。
◎ NW.jsを触る。 :
_NW.js (node-webkit) の開発をすぐ始める - Qiita
を参考に写経。
しかしこれでは動かなかった。npm start すると、なんか滅茶苦茶エラーが出る。
_node-webkit改めNW.jsを触ってみた - Umi Uyuraのブログ を参考にして、package.json を修正。"scripts": { } の中に、"start": "nw" とだけ書いてある状態にした。
これで npm start したら、ブラウザっぽいウインドウが開いた。なるほど、これで動いてるのかな…。たぶん。
それにしても、フォルダの中にある、node_modules というフォルダのサイズが、100MB以上あるんだけど…。該当フォルダのバックアップを取るのが大変そう…。他の環境に配布する時も、100MB以上をドカンと渡すのだろうか。豪快な世界だ…。
- フォルダを作って中に入る。
- index.html を作成。
- npm init を実行して、package.json というファイルを作成する。色々尋ねてくるが、途中で entry point: (index.js) と尋ねてくるので index.html と入力。
- npm install --save nw を実行。おそらくコレで、NW.js 関連のファイルがローカルフォルダにインストールされる、のかな。
- package.jsonの中身に1行追加。"test": の下に、"start": "nw" と追加する。おそらくこれで、「NW.jsを使ってスタートしなさい」という指定になるのかなと。分からんけど。
- npm start を実行。
しかしこれでは動かなかった。npm start すると、なんか滅茶苦茶エラーが出る。
_node-webkit改めNW.jsを触ってみた - Umi Uyuraのブログ を参考にして、package.json を修正。"scripts": { } の中に、"start": "nw" とだけ書いてある状態にした。
これで npm start したら、ブラウザっぽいウインドウが開いた。なるほど、これで動いてるのかな…。たぶん。
それにしても、フォルダの中にある、node_modules というフォルダのサイズが、100MB以上あるんだけど…。該当フォルダのバックアップを取るのが大変そう…。他の環境に配布する時も、100MB以上をドカンと渡すのだろうか。豪快な世界だ…。
◎ jQueryが使えない。 :
_Node.jsでjQueryを利用する - ZeBeVogue別館
を参考に npm install --save jquery をしてソースをコピペして動かしてみようとしたのだけどエラーが出て動かない。なんでや…。
[ ツッコむ ]
以上、1 日分です。