On this page

概要

このサンプルは、PySide2を使用して、Houdiniの内部で独自のUIウィンドウを作成します。 PySide2は、Houdiniに含まれているため、インストールする必要はありません。

Tip

Houdiniのペインタブ内に独自のインターフェースが必要な場合は、Python Panelを使用します。

実装

Warning

PySide2コードは、Houdiniのメインスレッドから実行する必要があります。 つまり、これはシーンファイルのHoudiniモジュールからという意味で、 シーンファイルのロード時に実行されたり、シェルフツールの Script タブから実行されます。

Pythonシェルで、以下のサンプルコードを実行しないでください。実行しても機能せず、Houdiniがクラッシュする可能性があります。

  1. シェルフ上の空白スペースで右クリックし、 New Tool を選択します。

    ツールの Namepysideに、 LabelPySide2 Demoに、 IconMISC_pythonに設定します。

  2. ツールの Script タブで、以下のコードをペーストします。

    from PySide2 import QtCore
    from PySide2 import QtWidgets
    
    class FontDemo(QtWidgets.QWidget):
        def __init__(self, parent=None):
            QtWidgets.QWidget.__init__(self, parent)
    
            hbox = QtWidgets.QHBoxLayout()
    
            self.setGeometry(500, 300, 250, 110)
            self.setWindowTitle('Font Demo')
    
            button = QtWidgets.QPushButton('Change Font', self)
            button.setFocusPolicy(QtCore.Qt.NoFocus)
            button.move(20, 20)
    
            hbox.addWidget(button)
    
            self.connect(button, QtCore.SIGNAL('clicked()'), self.showDialog)
    
            self.label = QtWidgets.QLabel('This is some sample text', self)
            self.label.move(130, 20)
    
            hbox.addWidget(self.label, 1)
            self.setLayout(hbox)
    
        def showDialog(self):
            ok, font = QtWidgets.QFontDialog.getFont()
            if ok:
                self.label.setFont(font)
    
    dialog = FontDemo()
    dialog.show()
    
  3. Accept をクリックします。

  4. 新しいPySide2 Demoのシェルフツールをクリックします。

    ボタンとラベルを含んだカスタムウィンドウが開きます。ボタンをクリックして、ラベルテキストのフォントを変更するフォント選択ダイアログを表示します。

ウィンドウの寿命

PySide2ウィンドウは、Pythonでそれを参照している場合のみ存在します。

独自のコードを書く時、関数内にウィンドウを作成し、(hou.sessionのように)メモリ内のどこかに継続して保存しないのであれば、Pythonガベージがその関数の最後でウィンドウを収集する時にウィンドウが消えます。

このサンプルでは、ツールスクリプトの実行が終了した後もウィンドウは継続して存在しますが、これは、ツールが再度クリックされるまで、スクリプトコンテキストをHoudiniが実際にリサイクルしないという事実の副作用です。

PySide2の代わりにPyQt5を使用する

PySide2の代わりにPyQt5を使用したい場合、PyQt5をインストールする必要があります。 尚、PyQt5の商業的利用には、商用ライセンスが必要なため、詳細はPyQt5のウェブサイトを参照してください。

Windows

WindowsでPyQt5を使用する場合、Houdini内のPythonのパス(Houdini install location/python)に、必ずライブラリをインストールしてください。

サンプルでPyQt5を使用するには、PySide2の参照をPyQt5に置き換えます:

from PyQt5 import QtCore
from PyQt5 import QtWidgets

HOMクックブック