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

hou.qt.XMLMenuParser class

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

On this page

このオブジェクトは、XMLメニュー定義に基づいてQMenuを構築し、そのメニュー内のショートカットが割り当てられているアイテムを有効にするためのキーボードショートカット制御も簡単にします。

エクスプレッションやスクリプトコードなどのスクリプトアイテムは、該当するメニューアイテムのIDとラベルが(定義されていれば)格納されるkwargsに渡されます。

メソッド

Examples

以下のサンプルでは、このオブジェクトを使用してXMLファイルを準備する方法を説明しています。 これは、イベントハンドラー内で呼び出し可能なhou.qt.Menuを必要時に生成します。

    self._mymenuparser = XmlMenuParser(context = "h.pane.parms", xmlfile = "c:/temp/menu.xml")
...
    def contextMenuEvent(self, event):
        # 評価時にmenu.xml内のエクスプレッションまたはコードに渡される独自のkwargs
        menukwargs["parm"] = menucontextparm
        menukwargs["parmname"] = menucontextparm.name()
        menu = self._mymenuparser.generateMenu(kwargs = menukwargs, hotkeyaction = self._processHotKeyAction)
        if not menu.isEmpty():
            menu.popup(event.globalPos())

XMLファイル:

<?xml version="1.0" encoding="UTF-8"?>
<menuDocument>
<menu>
    <actionItem id="set_keyframe">
        <label>Set a Keyframe</label>
    </actionItem>
    <actionItem id="rem_keyframe">
        <labelExpression>return kwargs["label"] + " - " + kwargs["parmname"]</labelExpression>
    </actionItem>
    <actionItem id="revert_defs">
    </actionItem>

    <toggleItem>
        <label>Parm Locked</label>
        <enableExpression><![CDATA[
return kwargs['parm'] is not None
]]></enableExpression>
        <valueExpression><![CDATA[
return kwargs['parm'].isLocked()
]]></valueExpression>
        <scriptCode><![CDATA[
kwargs['parm'].lock(not kwargs['parm'].isLocked())
]]></scriptCode>
    </toggleItem>

    <actionItem id="lock_parm">
        <context><expression><![CDATA[
if kwargs['parm'] is not None and kwargs['parm'].isLocked():
return False
return True
]]></expression></context>
    </actionItem>
    <actionItem id="unlock_parm">
        <context><expression><![CDATA[
if kwargs['parm'] is not None and kwargs['parm'].isLocked():
return True
return False
]]></expression></context>
    </actionItem>
    <separatorItem/>
    <subMenu>
        <label>Expressions</label>
        <actionItem id="toggle_expr"/>
        <actionItem id="edit_expression"/>
        <actionItem id="expand_values"/>
        <actionItem id="use_python"/>
        <actionItem id="use_old_language"/>
    </subMenu>
</menu>
</menuDocument>

hou.qt