2008/06/21(土) [n年前の日記]
#1 [python] PythonからWebブラウザを起動する方法がわからない
アプリのヘルプ文書をhtmlで用意するとして、それをwxPythonで作ったアプリから開く方法がわからない。メニューのヘルプ→ヘルプ、を選んだら、html文書を各環境の標準ブラウザで開かせたいのだけど。
Python のモジュールに _webbrowser という名前そのまんまのモノがあって。よく見かける、httpから始まるURLだったら、webbrowser.open(URL) としてやるだけでブラウザは起動する。が、ローカルHDD内に入ってる、htmlファイルのパスを ―― 「C:\\hoge\\fuga」+「/piyo/index.html」なんてのを渡そうとすると、エラーが出てしまう。
_urllib というモジュールの中に、pathname2url(path) というメソッド(?)があって。「ローカルシステムにおける記法で表されたパス名 path を、URL におけるパス部分の形式に変換」してくれるらしい。が、前述のパスを渡すと、「///C|/hoge/fuga/piyo/index.html」という記述になる。得られた文字列の頭に「file:」でもつけたして webbrowser.open(URL) を呼ぶと、Firefox から「file:///C なんてアドレスは知らんがな」的文句を言われてしまうわけで。
IEはどうだったか知らないけれど、Firefoxの場合、「|」が複数のURLを渡すための区切り文字になっていたような気がする。なもんだから、「file:///C|/hoge/fuga/piyo/index.html」をFirefoxに渡すと、「file:///C」と「/hoge/fuga/piyo/index.html」という2つのURLモドキを渡してしまうのではないか。と想像。
OSの関連付けに従ってファイルを開く、 _os.startfile() という手もあるらしいと知る。
カレントディレクトリを「C:\\hoge\\fuga\\piyo\\」にしてもOKなのであれば、webbrowser.open("index.html") で開けるみたい、ではある。しかし、カレントディレクトリを「C:\\hoge\\fuga\\」にして、webbrowser.open("piyo/index.html") ではダメ。
アレ? webbrowser.open("C:\\hoge\\fuga\\piyo\\index.html") であっさりブラウザで開けてしまった。そのOSのパス区切り文字を正しく使ったパスを与えてやれば、問題なく動く、のであらうか。であれば、
Python のモジュールに _webbrowser という名前そのまんまのモノがあって。よく見かける、httpから始まるURLだったら、webbrowser.open(URL) としてやるだけでブラウザは起動する。が、ローカルHDD内に入ってる、htmlファイルのパスを ―― 「C:\\hoge\\fuga」+「/piyo/index.html」なんてのを渡そうとすると、エラーが出てしまう。
_urllib というモジュールの中に、pathname2url(path) というメソッド(?)があって。「ローカルシステムにおける記法で表されたパス名 path を、URL におけるパス部分の形式に変換」してくれるらしい。が、前述のパスを渡すと、「///C|/hoge/fuga/piyo/index.html」という記述になる。得られた文字列の頭に「file:」でもつけたして webbrowser.open(URL) を呼ぶと、Firefox から「file:///C なんてアドレスは知らんがな」的文句を言われてしまうわけで。
IEはどうだったか知らないけれど、Firefoxの場合、「|」が複数のURLを渡すための区切り文字になっていたような気がする。なもんだから、「file:///C|/hoge/fuga/piyo/index.html」をFirefoxに渡すと、「file:///C」と「/hoge/fuga/piyo/index.html」という2つのURLモドキを渡してしまうのではないか。と想像。
OSの関連付けに従ってファイルを開く、 _os.startfile() という手もあるらしいと知る。
カレントディレクトリを「C:\\hoge\\fuga\\piyo\\」にしてもOKなのであれば、webbrowser.open("index.html") で開けるみたい、ではある。しかし、カレントディレクトリを「C:\\hoge\\fuga\\」にして、webbrowser.open("piyo/index.html") ではダメ。
アレ? webbrowser.open("C:\\hoge\\fuga\\piyo\\index.html") であっさりブラウザで開けてしまった。そのOSのパス区切り文字を正しく使ったパスを与えてやれば、問題なく動く、のであらうか。であれば、
path = os.path.abspath("piyo/index.html") webbrowser.open(path)みたいな感じでいいのかな?
[ ツッコむ ]
#2 [prog][python][cg_tools] アプリ用のアイコン画像を作成
Inkscapeで元画像を作成。
IcoFX でアイコン化。
- ファイル → ドキュメントの設定 → ページ → ページサイズ → Icon 48x48に変更。正方形状のドキュメントにする。
- ざっくりと描いて。
- 表示 → アイコンプレビューでアイコンサイズになったときの見栄えを確認。
- .svg で保存。
- ファイル → ビットマップにエクスポート → 96x96ドットのサイズでpng形式で出力。
IcoFX でアイコン化。
- 先ほど作成した画像を、「True Color + アルファチャンネル(32ビット)」「48x48」で開く。
- アイコン → イメージからWindowsアイコンを作成、を選択。
- 32x32-32bit、16x16-32bit、48x48-8bit(256色)、32x32-8bit、16x16-8bit、の画像を作成。
- アイコン画像 .ico として保存。
[ ツッコむ ]
以上、1 日分です。