自分のツールで使っている画像をPySideで読み込もうと思うと、、、
「:/」から初めて楽したいのにできないし、フルパスで書くとコード長くなるし、、、ツールの位置を変えたら修正しなきゃだし、「__file__」を使ってやろうとしてもコードが長くなるし、煩雑になるし、読みにくいし、、、、
面倒くさい(ヽ´ω`)
じゃー!QRC使えばいいじゃん!っとなりますが、、、通常、Designerのリソースブラウザで画像を読み込んで、QRCを保存して、コマンドラインでQRCをpyに変換する、、、って流れになると思います。だけど、、、
ダル(ヽ´ω`)
更に、ツールを作っている時は、画像が追加されたり、画像を修正したりすると思います。その度に、QRCを更新してpyに変換しなおさなきゃいけません。それが、1回や2回なんてもんでないと思います。
とっても
面倒くさい
v(*´ω`*)v
そこで、なんとか手順が最小限で済む方法を模索してみました。
まず、 QRCをNotepad++で見てみると、ファイルの場所をXML形式で書いただけのファイルだとわかりました。
っということは、フォルダの中にある画像を調べて、XML形式で書いたQRCを作って、そのままpyに変換してしまえば、、、
ツール実行するだけ
OKじゃん!
(゚∀゚)
まず以下のpyファイルを作成しました。これは、指定されたディレクトリにあるPNG画像を最下層まで調べてQRCファイルを作るコードです。単純なXMLなので、DOMなどは使用しませんでした(;・∀・)どこのディレクトリを調べるか、batchから引数で指定できるようにしてあります。
# -*- coding:utf-8 -*- import sys import os PREFIX='/myTool/' def searchFile(root, result): for file in os.listdir(root): fullpath = os.path.join(root, file) if os.path.isdir(fullpath): searchFile(fullpath, result) if file.split('.')[-1] == 'png': result.append(fullpath) return result def main(): root = sys.argv[1] files = searchFile(root, []) qrc = os.path.join(root, 'resource.qrc') fw = open(qrc, 'w') fw.write('<RCC>\n') fw.write(' <qresource prefix="%s">\n' % PREFIX) for file in files: file = file.replace(root, './') fw.write(' <file>%s</file>\n' % file) fw.write(' </qresource>\n') fw.write('</RCC>\n') if __name__ == '__main__': main()
「PREFIX=’/myTool/’」の部分は、お好みで修正してください。このままだと、「:/myTool/画像名」で読み込める状態になります。ただし!「PREFIX=’/’」にすると、Mayaのリソースイメージと同じく「:/画像名」で読み込めますが、「Mayaと名前が重複すると負けてしまう」ので注意が必要です。
次は、実行用のバッチファイルです。このバッチをダブルクリックすれば、上記のツールを実行しQRCを作って、pyファイルに変換してくれます(`・ω・´)ゞ
@echo off chcp 65001 set py=.\resource.py :: Create QRC echo Create QRC "C:\Python27\python.exe" .\createQRC.py ./ :: Convert QRC to PY echo Convert QRC to PY "C:\Python27\Lib\site-packages\PySide\pyside-rcc.exe" -o %py% .\resource.qrc echo "Done!" pause
「set py=.\resource.py」の部分はお好みで変更してください。後々、ツールから読み込むので、ツールがあるディレクトリに変更されることをオススメします。
上記のコードを、画像のディレクトリと同じ場所に保存します。
では早速、実行してみます!!(`・ω・´)ゞ
WindowsにPython2.7とPySideをインストールする!
自分のツールで使う場合は、出来上がった「resource.py」を読み込んであげます!
import resource
これなら、最小限の作業量で、QRC作成、PYに変換ができると思います!(`・ω・´)ゞ