右クリックメニューで.uiを.pyに変換する【PySide, PyQt】

以前にPyQtでGUIを作成する手順について記事にしました。

この記事の中でQtDesignerというデザイナで生成される.uiファイルを.pyファイルに変換する手順について記載しました。

この手順、一行コマンドを打つだけなんですけど、私的には面倒だなと感じました。

そこで、ファイルを右クリックで選択して変換コマンドを実行できるようにしていきたいと思います。

スポンサーリンク

作業環境

  • Windows10
  • Anaconda 4.10(scoopでインストール)
  • Python 3.8
  • PySide2

.uiを.pyに変換するbatファイルを作成する

変換コマンドを実行するには

  1. 仮想環境の呼び出し
  2. 対象ファイルを引数で受け取り
  3. .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を実行できるようにします。

以下のサイトを参考に右クリックメニューに登録します。

右クリックメニューにアイテムを追加する - Windows 10
Windowsで、あるファイルを開く場合は、以下のように、大体Windowsエクスプローラー上でマウス右クリックして関連付けられているアプリの中から1つを選んで起動するわけですが、いちいち関連アプリを選ぶのは面倒です。JPEGイメージファイルを開くために、いくつかの関連アプリからペイントアプリを選んでイメージを開く状況...

右クリックメニューに登録するとこんな感じになります。

試しに実行してみると、同フォルダに.pyファイルが生成されました。

参考サイト

仮想環境の呼び出し

【Python】コマンドプロンプトからANACONDA NAVIGATORを起動する | プロブロ(Programming Blog)
  Pythonの実行環境を新たに用意しようと、ANACONDAをインストール。 早速使いたいのにスタートメニューが開かず、コマンドプロンプトから実行することにしました。 コマンドプロンプトからANACONDA …

batファイルの引数について

pyside-uicを使ったuiファイルをpyファイルに変換するバッチ
QT Designer※1 でウィンドウのレイアウトなどを作って、 そこで保存したUIファイルをPySideで読み込んで使用するということをします。 ※1 Mayaをインストールしている場合インストールフォルダにデフォルトで一緒にインストールされています。 例:C:\Program Files\Autodesk\May...

コメント

タイトルとURLをコピーしました