ON-BLOG

CGのこと、あれこれ書いてます。

Pyside勉強 その七

今回はQtdesignerを使って簡単な画像付のUIを作成し
それをMAYAとリンクさせるところまでやってみたいと思います。

はじめにUIファイルを作成します。
こんな感じの簡単なやつでいきます。
f:id:tommy_on:20190428004054p:plain
内容的にも簡易です。
widget作って、今回はQLabelを配置。
名前を【BackGound】としてしておきます。
さらにpixmapにDドライブ直下においている、適当な画像を指定しています。
今回はローカルにあった将軍の画像。
※将軍やらないとなぁ・・・
f:id:tommy_on:20190403000059j:plain
最後にPushButtonを配置し、表示テキストを
【Hellow】として、Dドライブ直下にUIという名前で保存します。

次はMAYA側。
以下のコードになります。

from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtUiTools import QUiLoader
from maya.app.general import mayaMixin


class Image(mayaMixin.MayaQWidgetBaseMixin,QDialog):

    def __init__(self, parent = None):
        super(Image, self).__init__(parent)
        self.UIPanel = QUiLoader().load("D:/UI.ui",parentWidget=self)
        self.UIPanel.BackGound.setPixmap(QPixmap("GR.jpg"))

        self.UIPanel.pushButton.clicked.connect(self.test)

    def test(self):
        print "Push!"
    
Window = Image()
Window.UIPanel.show()

実行するとMAYAではこうなります。
f:id:tommy_on:20190428005822p:plain


新たに追加された部分を説明します。

from PySide.QtUiTools import QUiLoader

UIファイルを読み込むモジュールです。
これ以外にも読み込み方はありますが、今回はこれを使います。

クラス定義する際に、

mayaMixin.MayaQWidgetBaseMixin

の記載は忘れずに。

self.UIPanel = QUiLoader().load("D:/UI.ui",parentWidget=self)

QUiLoader().load これがUIファイルを読み込むメソッドになります。
シンプルに読み込んでます。
parentWidget=selfここが重要になります。
簡単なんですが、parentWidgetなので親のウィジェットを指定しています。
Selfなので、class Imageが親になります。
絵にするとこんな感じ。
f:id:tommy_on:20190428005305p:plain

parentWidgetでSelfをしているすることで、【UIPanel】
がMAYAの後ろにいかなくなります。

self.UIPanel.BackGound.setPixmap(QPixmap("D:/GR.jpg"))

ここでQtDesinerで指定した画像がリンク切れを起こしてますので
サイド設定しています。

ほかは特に記載の必要がないと思います。

こんな感じでUIファイルを読み込みます。
次はUIファイルにボタンを追加してますので
マウスジェスチャーを入れてみようかともいます。

以上です。