Houdini 20.0 Pythonスクリプト hou hou.qt

hou.qt.ColorPalette class

小さなカラーパレットから迅速にカラーを選択することができる便利ウィジェット。

On this page

概要

独自のカスタムカラーを毎回指定しなければならないという面倒事をなくすために、事前に定義されたカラーのリストからユーザがカラーを選択できるようにしたい場合があります。 例えば、ユーザインターフェース内でアイテムを色別に“タグ付け”すれば、それらのアイテムを整理することができます。

このウィジェットでは、カラーのリストを指定することができ、ユーザはそのリストからカラーを選択し、必要あればそのカラーを編集することができます。

このオブジェクトは以下の2通りの使い方があります:

  • パレットウィンドウがパッと現れて、ユーザがカラーをクリックすると、そのパレットウィンドウが消えるポップアップウィンドウとして使用することができます。

  • または、ウィジェットレイアウト内に通常のQtウィジェットとして埋め込むことができます。これは、例えば、何かのカラーを選択するためのパレットを用意したいプリファレンスウィンドウで役に立ちます。

ColorPaletteをポップアップとして使用する方法

このカラーパレットは モードレス です。 そのため、カレーパレットが開いてもスクリプトは引き続き実行されるので、シグナルを使用して、ユーザがそのパレットをどのように操作しているのかフィードバックを取得する必要があります。

class MyWindow(QtWidgets.QDialog):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)

        self._colors = [
            QtGui.QColor(255, 0, 0),
            QtGui.QColor(0, 255, 0),
            QtGui.QColor(0, 0, 255),
            QtGui.QColor(255, 255, 0),
            QtGui.QColor(255, 0, 255),
            QtGui.QColor(0, 255, 255),
            QtGui.QColor(255, 128, 0),
            QtGui.QColor(255, 255, 255),
            QtGui.QColor(0, 0, 0),
        ]

        self._palette = ColorPalette(self._colors)
        self._palette.colorSelected.connect(self._chose_color)

        layout = QtWidgets.QVBoxLayout()
        self.setLayout(layout)

        self._label = QtWidgets.QLabel("No color")
        layout.addWidget(self._label)
        self._button = QtWidgets.QPushButton("Choose")
        self._button.clicked.connect(self._palette.show)
        layout.addWidget(self._button)

    def _chose_color(self, ix, color):
        msg = "Color #{}, R: {}, G: {}, B: {}".format(
            ix, color.red(), color.green(), color.blue()
        )
        self._label.setText(msg)

Note

このウィジェットへの持続的な参照が少なくとも1個なければならないことを忘れないでください。 そうしないと、そのウィンドウがガーベジコレクションされて即座に閉じられてしまいます。

Qtレイアウト内にColorPaletteをウィジェットとして埋め込む方法

単にListEditorをウィジェットとして使用し、シグナルを使用することで、ユーザがそのパレットを操作した時に反応を起こすことができます。

class MyWindow(QtWidgets.QDialog):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)

        self._colors = [
            QtGui.QColor(255, 0, 0),
            QtGui.QColor(0, 255, 0),
            QtGui.QColor(0, 0, 255),
            QtGui.QColor(255, 255, 0),
            QtGui.QColor(255, 0, 255),
            QtGui.QColor(0, 255, 255),
            QtGui.QColor(255, 128, 0),
            QtGui.QColor(255, 255, 255),
            QtGui.QColor(0, 0, 0),
        ]

        layout = QtWidgets.QVBoxLayout()
        self.setLayout(layout)

        self._label = QtWidgets.QLabel("No color")
        layout.addWidget(self._label)

        self._palette = ColorPalette(self._colors, size=24)
        self._palette.colorSelected.connect(self._chose_color)
        self._palette.colorEdited.connect(self._edited_color)
        layout.addWidget(self._palette)

    def _chose_color(self, ix, color):
        msg = "Color #{}, R: {}, G: {}, B: {}".format(
            ix, color.red(), color.green(), color.blue()
        )
        self._label.setText(msg)

スウォッチレイアウト

  • ウィジェットのサイズは、スウォッチサイズ(イニシャライザのsize引数)とパレット内のカラー数から求まります。

  • デフォルトでは、カラーパレットはできるだけ正方形になるようにスウォッチの配置を試みます。

  • 配置するカラーの数が十分でない場合、スウォッチに空きができます。

  • イニシャライザのcolumns引数を指定すると、ウィジェットはその指定した列幅に固定され、行が増えるほどスウォッチは下に配置されていきます。

  • イニシャライザのrows引数を指定すると、ウィジェットはその指定した行幅に固定され、列が増えるほどスウォッチは右に配置されていきます。

  • rows引数とcolumns引数の両方を指定すると、そのレイアウトは、 カラーリストのカラーが収まり切らなくても その行と列の幅のとおりになります。

  • デフォルトでは、カラーリストのカラーは、1行目の左から右、次に2行目の左から右という順番で並びます。イニシャライザにby_column=Trueを渡すと、ウィジェットは1列目の上から下、次に2列目の上から下という順番でカラーを並べます。

ユーザがカラーを編集できるようにする方法

デフォルトでは、ユーザはパレット内のカラーをAltクリックすることで、そのスウォッチのカラー値を編集することができます。 編集したカラーをユーザが受け入れると(編集操作をキャンセルしなかった場合)、ウィジェットはcolorEditedシグナルを送信します。

Note

編集したパレットはColorPaletteオブジェクト内で維持されます。 別のColorPaletteオブジェクトを使用した時でも別のセッションで使用した時でもそのパレットを持続させたいのであれば、あなた自身でその処理を加える必要があります。

ユーザがカラーを編集できないようにしたいのであれば、ウィジェットを作成する時にallow_editing=Falseを渡すか、または、ウィジェットに対してsetEditingAllowed(False)をコールしてください。

背景カラー

  • デフォルトでは、ウィジェットの背景は、現行パレットのデフォルトのウィンドウ背景で塗られます。イニシャライザにbg_color引数を渡すことで、カスタムカラー(またはブラシ)を指定することができます。

  • 空っぽのスウォッチは特別なブラシで塗られます。デフォルトのブラシは、暗いまたは明るい斜線を描画します。イニシャライザにempty_color引数を渡すことで、空っぽの正方形にカスタムカラー(またはブラシ)を指定することができます。

Tipsとメモ

  • カラーリスト内の“カラー”には、QColorオブジェクトだけでなく、QBrushオブジェクトも指定することができます。このQBrushオブジェクトを使用することで、単色だけでなくグラデーション、パターン、テクスチャをパレット内のスウォッチとして設定することができます。

シグナル

paletteChanged()

setColorList()によってパレット全体が置換された時に発動されます。

colorEdited(index: int, old: QColor, new: QColor)

ユーザがカラーのどれかを手動で編集した時に発動されます(上記のカラーの編集を参照してください)。

colorSelected(index: int, color: QColor)

ユーザがパレット内のカラーを選択した時に発動されます。 ユーザが別のカラーにドラッグする度に、または、レイアウトにウィジェットが埋め込まれている場合だとユーザがカラー選択を変更する度に、シグナルを発動することができます。ユーザがポップアップからカラーを選択してそのポップアップが閉じた時にのみ反応を起こしたいのであれば、代わりにcolorAcceptedシグナルを使用してください。

colorAccepted(index: int, color: QColor)

ユーザがポップアップ内のカラー上でマウスボタンを離してそのポップアップが閉じた時にのみ発動されます。

colorCancelled()

ユーザが有効なカラーを選択せずにポップアップを閉じた場合(例えば、ポップアップ外をクリックしたり、空っぽの空間をクリックした場合)に発動されます。

メソッド

hou.qt

  • hou.qt.ColorField

    カラー入力のウィジェット

  • hou.qt.ColorPalette

    小さなカラーパレットから迅速にカラーを選択することができる便利ウィジェット。

  • hou.qt.ColorSwatchButton

    Houdiniスタイルでカラー選択に使用するボタン。

  • hou.qt.ComboBox

    Houdiniスタイルのスクロール不可のコンボボックス(メニューボタンとメニュー)。

  • hou.qt.Dialog

    Houdiniスタイルの単純なダイアログ。

  • hou.qt.FieldLabel

    入力フィールドの単純なラベル。

  • hou.qt.FileChooserButton

    クリックするとHoudiniファイル選択ダイアログが開くHoudiniスタイルのボタン。

  • hou.qt.FileLineEdit

    ファイル選択フィールド用にカスタマイズされたQLineEditウィジェット。

  • hou.qt.GridLayout

    対応しているどのプラットフォームでも同じスタイルになるレイアウトプロパティを持ったHoudini UI特有のグリッドレイアウト。

  • hou.qt.HelpButton

    クリックするとヘルプページを開くHoudiniスタイルのボタン。

  • hou.qt.Icon

    Houdiniアイコン名から生成されたアイコン。

  • hou.qt.InputField

    整数、float、文字列のどれかを格納したテキストフィールド(1から4)のベクトル。

  • hou.qt.ListEditor

    文字列のリストを表示/編集するための(ダイアログまたは再利用可能ウィジェットとしての)便利ユーザインターフェース。

  • hou.qt.Menu

    Houdiniスタイルのメニュー。

  • hou.qt.MenuBar

    Houdiniスタイルのメニューバー。

  • hou.qt.MenuButton

    クリックするとドロップダウンメニューを開くHoudiniスタイルのボタン。

  • hou.qt.NodeChooserButton

    クリックするとHoudiniノード選択ダイアログを開くHoudiniスタイルのボタン。

  • hou.qt.ParmChooserButton

    クリックするとHoudiniパラメータ選択ダイアログを開くHoudiniスタイルのボタン。

  • hou.qt.ParmDialog

    Houdiniパラメータダイアログ。

  • hou.qt.ParmTupleChooserButton

    クリックするとHoudiniパラメータタプル選択ダイアログを開くHoudiniスタイルのボタン。

  • hou.qt.SearchLineEdit

    検索フィールド用またはフィルターフィールド用にカスタマイズされたQLineEditウィジェット。

  • hou.qt.Separator

    Houdiniスタイルの単純なセパレータウィジェット。

  • hou.qt.ToolTip

    マウスカーソルを置くとツールチップを表示するHoudiniスタイルのツールチップウィンドウ。

  • hou.qt.TrackChooserButton

    クリックするとHoudiniトラック選択ダイアログを開くHoudiniスタイルのボタン。

  • hou.qt.ViewerOverlay

    ビューアQtウィンドウオーバーレイを実装するための基本ウィンドウクラス。

  • hou.qt.Window

    Houdiniスタイルの汎用ウィンドウ。

  • hou.qt.WindowOverlay

    Qtオーバーレイウィンドウを実装するための基本ウィンドウクラス。

  • hou.qt.XMLMenuParser

    XMLメニューを扱うためのオブジェクト。

  • hou.qt.createCheckBox()

    このメソッドは廃止予定です。

  • hou.qt.createComboBox()

    このメソッドは廃止予定です。

  • hou.qt.createDialog()

    このメソッドは廃止予定です。

  • hou.qt.createFileChooserButton()

    このメソッドは廃止予定です。

  • hou.qt.createHelpButton()

    このメソッドは廃止予定です。

  • hou.qt.createIcon()

    このメソッドは廃止予定です。

  • hou.qt.createMenu()

    このメソッドは廃止予定です。

  • hou.qt.createMenuBar()

    このメソッドは廃止予定です。

  • hou.qt.createMenuButton()

    このメソッドは廃止予定です。

  • hou.qt.createNodeChooserButton()

    このメソッドは廃止予定です。

  • hou.qt.createSeparator()

    このメソッドは廃止予定です。

  • hou.qt.createToolTip()

    このメソッドは廃止予定です。

  • hou.qt.createWindow()

    このメソッドは廃止予定です。

  • hou.qt.editList()

    編集された文字列リストを返します。

  • hou.qt.extendedKeyEventInfo()

    HoudiniがQtキーイベント値に対して維持している拡張情報を含んだ辞書を返します。

  • hou.qt.floatingPanelWindow()

    指定したフローティングパネルのウィンドウを表現したQWidgetインスタンスを返します。

  • hou.qt.fromQColor()

    指定したQColorをHOMカラーとアルファ値に変換します。

  • hou.qt.getBrush()

    指定したHoudiniリソースカラーのQBrushオブジェクトを返します。

  • hou.qt.getColor()

    指定したHoudiniリソースカラーのQColorオブジェクトを返します。

  • hou.qt.getCursor()

    HoudiniカーソルのQCursorオブジェクトを返します。

  • hou.qt.inchesToPixels()

    QtとHoudiniの両方のDPI設定を考慮して、インチをピクセルに変換します。

  • hou.qt.mainWindow()

    メインのHoudiniウィンドウを表現したQWidgetインスタンスを返します。

  • hou.qt.mimeType

    ドラッグアンドドロップ操作でデータを識別する際に使用するHoudiniのMIMEタイプの列挙型。

  • hou.qt.nativeModifierIndependentKeyCode()

    Qtキーイベントからネイティブスキャンコードと仮想キーコードを解釈し、キーを識別する目的で、押されている修飾キーの影響を受けていない整数値を返します。これを使用することで、押されているキーの辞書を維持することができます。

  • hou.qt.pixelsToInches()

    QtとHoudiniの両方のDPI設定を考慮して、ピクセルをインチに変換します。

  • hou.qt.qtKeyEventToString()

    Qtキーイベントを、UI表示に適した文字列、または、ホットキーマネージャーに渡す文字列に変換します。

  • hou.qt.qtKeyForUI()

    Houdiniで管理されている利用可能な拡張キーイベントを使用して、修飾子が無視された場合でも、QtキーイベントのQtキー値を返します。拡張情報が利用不可の場合は単にevent.key()を返します。

  • hou.qt.qtKeyToString()

    Qt修飾子とキーイベントのテキストと一緒にQtキーをUI表示に適した、または、ホットキーマネージャに渡す文字列に変換します。

  • hou.qt.qtKeyToUIKey()

    Qt修飾子と一緒にQtキーを可能であればUIキーとUI修飾子に変換します。

  • hou.qt.selectColorFromPalette()

    カラーパレットから選択されたQColor値を返します。

  • hou.qt.skipClosingMenusForCurrentButtonPress()

    現在のマウスボタンイベントのメニューの自動クローズを無効にします。

  • hou.qt.styleSheet()

    Houdiniスタイルシートを返します。

  • hou.qt.toQColor()

    指定したHOMカラーとアルファ値をQColorに変換します。