PySideでqrcリソースを.pyに変換してコードから読み込みする方法

別にPySideに限った話ではないですが…

QTではリソースをqrcという形式で扱います。

そしてPython版のPySide・PyQtでは、

  • リソースファイルをqrcにまとめる
  • その.qrcを.pyコードに変換する
  • PySideのコードからリソース読み込み

こういう手順を踏む必要があると分かりました。

意外と複雑で分かりにくかったので、
同じく悩んでる人用に手順を残しておきます。

1.まずQtDesigner上でリソース(.qrc)を生成する

ここでは画像をリソース=qrcに変換します。

まずはQtDesignerのリソースブラウザを開きます。

▼ ここでペンアイコンをクリック

この画像のようにQtDesignerのペンアイコンをクリックしてリソースブラウザを開く

▼ リソースの編集ダイアログが表示される

リソースの編集ダイアログが表示される

左下にある新規ファイルアイコン(新しいリソースファイル)をクリックし、適当な名前(ここではapp.qrc)を付けてqrcを新規作成します。

▼ app.qrcを作った

左下にある新規ファイルアイコン(新しいリソースファイル)をクリックし、適当な名前(ここではapp.qrc)を付けてqrcを新規作成

次に右側にある青色フォルダのアイコン(プレフィックスを追加)をクリック、適当な名前でプリフィックスを追加してください。ここではプリフィックスは付けません

▼ プリフィックスは任意

右側にある青色フォルダのアイコン(プレフィックスを追加)をクリック、適当な名前でプリフィックスを追加

最後に青色フォルダアイコンの横にある [ファイルを追加]ボタンを押し、必要な画像・音声・テキストなどのリソースファイルを追加してください

▼ ここでは画像1つだけ追加した

青色フォルダアイコンの横にある [ファイルを追加]ボタンを押し、必要な画像・音声・テキストなどのリソースファイルを追加

ひとまずこれでqrcファイルの作成は完了

作業フォルダに app.qrc が生成されたはずです

2.qrcファイルをpyファイルに変換する

お次はqrcファイルをpyファイルに変換

これしないとpythonコードから読み込みできません

変換方法はとっても単純です。

▼ pyside2-rccコマンドを使った変換例

このツールを使えば.qrcから.pyに変換してくれます。

▼ ちなみに元のqrcファイルはこのような内容

▼ pyファイルに変換されるとこうなる

バイナリとしてpythonコード上で展開されてます。

PySide・PyQTでは直接qrcファイルは読み込めないです。

※ C++版Qtはよく分からないし不明

3.ウィンドウ表示コードからリソース画像表示

それではリソース画像を読み込み表示してみます。

▼ 次のコードを作ってみた(名前はapp.py)

▼ リソースから画像表示できた!

ウインドウ内にリソースから読み込みして画像表示できた!

ようやくリソースから画像表示成功…

リソースには次の形式でアクセスできます

  • :/[プリフィックス]/[ファイル名]
  • qrc:/[プリフィックス]/[ファイル名]

今回はプリフィックスなしです。

プリフィックスが必要になるのは用途の違うリソースを区別したい時とか、コードから動的にリソースをまとめて読み込む多い時ですかね(いい具体例が思いつかない)

ひとまずリソースの使い方が分かったので前進

少し面倒だけど手順を覚えれば簡単

ということで qrc ⇒ py の変換手順をまとめます。

  1. QtDesigner上でリソース(.qrc)を生成
  2. qrcファイルをpyファイルに変換
  3. コードからリソース画像などを表示

手順を踏んでいけば難しくはありません。

1PySide開発に役立つ関連記事

最後にPySide開発に役立つ関連記事を紹介します。

▼ ソフト文字列をQTranslatorで翻訳・多言語化

▼ QListWidgetをカスタマイズする方法

▼ ファイルダイアログ起動してパス取得する方法・コード例

https://pisuke-code.com/pyside-qfiledialog-basic-usage/

以上、PySideでのリソース変換手順でした。

Shareこの記事をシェアしよう!

Commentsこの記事についたコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください