pyside-uicを使ったuiファイルをpyファイルに変換するバッチ

QT Designer※1 でウィンドウのレイアウトなどを作って、

そこで保存したUIファイルをPySideで読み込んで使用するということをします。

※1 Mayaをインストールしている場合インストールフォルダにデフォルトで一緒にインストールされています。 例:C:\Program Files\Autodesk\Maya2016\bin\designer.exe

 

あんまりこんな使い方しないのかもしれませんが、

UIファイル使わずにPySideでUIを書く際にQT Designerで配置できるあれの書き方だけ知りたいなぁ~と思い、

.uiを.pyに変換して確認したくなりました。

変換するにはpyside-uic.exeというのを使ってコマンドプロンプトで変換書けますが、

毎回それを書くのがめんどうなのでバッチファイルを書きました。

 

ちなみにpyside-uic.exeはPySideをインストールすれば一緒に入ります。

もし無い方は自分も参考にした下記のサイト様が分かりやすいかと思います!

 

PySideモ-Windowsへのインストール
http://open-shelf.appspot.com/PySide/install-on-windows.html

 

pyside-uic.exeが手に入りましたら、下のコードをテキストエディタなどに貼り付けて保存し、

そのファイルの拡張子を.batに変更してみて下さい。

あとは、.uiファイルをそのバッチファイルにドラッグ&ドロップ(複数化)すれば

.uiファイルと同じフォルダに.pyに変換された同じファイル名のデータができます。

ドラック&ドロップすらデスクトップを表示したりやフォルダ開いたりするのが面倒な時があるので

僕はこのバッチファイルのショートカットを右クリックの「送る」※2にも表示させていますw

 (下のコードはpyside-uic.exeがC:\Python27\Scriptsにある前提のモノになります。インストール先が違う場合はそこを書き換えて下さい

 

※2 どうでもいいですが、C:\Users\ユーザー名\AppData\Roaming\Microsoft\Windows\SendTo にショートカットを入れると「送る」に表示されます


rem for文内で変数を使うために遅延環境変数の展開を有効化しておく
setlocal enabledelayedexpansion

rem ドラッグ&ドロップされたファイルをforでまわす
for %%A in (%*) do (

    rem 拡張子が.uiだったら処理続行
    if "%%~xA"==".ui" (

        rem 変数OutpuFileにアウトプットしたいフルパスをセットする
        rem %%~dA = ドライブ名, %%~pA = パス, %%~nA = ファイル名
        set OutpuFile="%%~dA%%~pA%%~nA.py"

        rem %hoge%とすると中身がなくなるので遅延環境変数 !hoge! を使う
        C:\Python27\Scripts\pyside-uic.exe %%A -o !OutpuFile!

    ) 

)
rem pause