右クリックメニューで.uiを.pyに変換する【PySide, PyQt】
以前にPyQtでGUIを作成する手順について記事にしました。
この記事の中でQtDesignerというデザイナで生成される.uiファイルを.pyファイルに変換する手順について記載しました。
この手順、一行コマンドを打つだけなんですけど、私的には面倒だなと感じました。
そこで、ファイルを右クリックで選択して変換コマンドを実行できるようにしていきたいと思います。
作業環境
- Windows10
- Anaconda 4.10(scoopでインストール)
- Python 3.8
- PySide2
.uiを.pyに変換するbatファイルを作成する
変換コマンドで以下の処理を行うようにします。
- 仮想環境の呼び出し
- 対象ファイルを引数で受け取り
- .uiから.pyへの変換
順番に説明していきます。
仮想環境を呼び出す
まずはコマンドプロンプトを開いて、使用する仮想環境を呼び出します。
以下のコマンドを実行します。
call (ユーザ)\scoop\apps\anaconda3\current\Scripts\activate (環境名)
activateのパスが環境によって異なるので、適宜変更してください。
変換対象のファイルを引数で受け取る
%1とするとファイルのフルパスを受け取ることができるようです。複数のファイルをドラッグアンドドロップした場合、%1,%2,…となっていきます。
これを使って、batファイルにファイルのフルパスを受け取ります。
.uiから.pyへの変換
.uiから.pyへの変換は冒頭で紹介した以前の記事で紹介した通り、以下のコマンドを実行します。
(ユーザ)\scoop\persist\anaconda3\envs\(環境名)\Library\bin\pyside2-uic *.ui -o *.py
batファイル
以上を組み合わせることで、最終的にbatファイルはこんな感じになります。
@echo off call (ユーザ)\scoop\apps\anaconda3\current\Scripts\activate (環境名) 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! を使う (ユーザ)\scoop\persist\anaconda3\envs\(環境名)\Library\bin\pyside2-uic %%A -o !OutpuFile! ) )
複数のファイルがドラッグアンドドロップされた場合に対応できるように、for文でループしています。また、生成されるファイル名が元のファイル名と同じになるように、ちょっとした処理をしています。
右クリックメニューでbatファイルを実行する
ドラッグアンドドロップでbatを実行してもいいんですけど、batファイルを探しに行くのも面倒なので、右クリックメニューからbatを実行できるようにします。
以下のサイトを参考に右クリックメニューに登録します。
右クリックメニューに登録するとこんな感じになります。
試しに実行してみると、同フォルダに.pyファイルが生成されました。
参考サイト
仮想環境の呼び出し
batファイルの引数について