Q100354: Python を使用して Nuke メニュー コマンドをアクティブにする方法

フォローする

まとめ

この記事では、 Nukeメニュー システムからコマンドを Python でアクティブ化する方法について説明します。

詳しくは

Nukeのグラフィカル ユーザー インターフェイス (GUI) は非常にカスタマイズ可能であり、その一環としてメニュー システムでさまざまな項目を追加、移動、またはアクティブ化できるため、ユーザーはNukeに完全に統合されたカスタム パイプラインをセットアップできます。

Nukeのメニュー システムは、Menus と MenuItems という 2 つの主要なクラスで構成されており、その定義は以下に示されています。

  • Menu クラス:他の Menu または MenuItem のコンテナー
  • MenuItem クラス: Nukeでアクションを実行する QAction のコンテナー

Menu クラスと MenuItem クラスは、 Nuke内でメニュー構造を作成するために使用されます。これらを使用して独自のメニュー構造を作成し、カスタム メニューを作成することもできます。 2 つのクラスの詳細については、以下を参照してください。

QAction は QT/PySide クラスであり、コマンドの実行に使用できる抽象アクションです。 QAction の詳細については、次の QT ドキュメントを参照してください: http://doc.qt.io/qt-5/qaction.html

GUI でNukeメニューからコマンドを実行すると、実際には、MenuItem コンテナに、関連付けられた QAction を呼び出すように指示することになります。たとえば、[編集] メニューで [QAction の複製] を選択すると、その QAction に割り当てられたコマンドであるため、ノードが複製されます。

方法

Nukeのメニュー構造でコマンドを Python 的にアクティブにするには、特定の MenuItem コンテナを「検索」し、それに関連付けられた QAction を呼び出す必要があります。これは、以下のコードを使用して実行できます。

mainMenu = nuke .menu("Nuke")
mainMenu.findItem("Edit/Clone").invoke()

コードの最初の行mainMenu = nuke .menu("Nuke") 、メインのNukeメニュー ツールバーの Menu クラスを返します。

注:代わりにノード ツールバーにアクセスしたい場合は、「Nuke」を「Nodes」に置き換えることにより、同じコマンドで実行できます。

2 行目のmainMenu.findItem("Edit/Clone").invoke()findItem()関数を使用して、「Edit」メニュー内の「Clone」MenuItem コンテナを検索します。次に、その MenuItem の QAction がinvoke()関数を介してアクティブ化されます。この場合の結果は、選択したノードのクローンを作成することになります。

注:メニュー システムで特定の QAction を見つけるためのパスを作成するには、サブメニューに入るたびに区切り文字として「/」を使用する必要があります。例: 編集/クローン、ビューア/表示/次へなど。


nuke .menu()で使用できる現在有効なメニューは次のとおりです。

「Nuke」 : アプリケーションメニュー

'Pane' : UI ペインとパネル メニュー

'ノード' : ノード ツールバー (およびノードグラフの右マウス メニュー)

'プロパティ' : プロパティ パネルの右マウス メニュー

'アニメーション': アニメーション メニューとカーブ エディタの右マウス メニューのノブ

'Viewer' : ビューアの右マウス メニュー

「ノード グラフ」 : ノード グラフの右マウス メニュー

'Axis' : すべての Axis_Knobs のメニューに表示される機能。

    私たちはそれを聞いて申し訳ございません

    理由をお聞かせください