サポートチケットを作成する
フォローする

Q100354:Pythonを使ってNukeメニューコマンドを有効にする方法

概要

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

詳しくは

Nukeのグラフィカルユーザーインターフェース(GUI)は非常にカスタマイズ可能で、その一部としてメニューシステム内のさまざまな項目を追加、移動、またはアクティブ化することができます。

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

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

MenuクラスとMenuItemクラスは、Nuke内でメニュー構造を作成するために使用されます。それらを使用して独自のメニュー構造を作成し、カスタムメニューを作成することもできます。この2つのクラスに関する詳細は、こちらにあります。

メニュークラス
MenuItemクラス

QActionはQT / PySideクラスであり、コマンドを実行するために使用できる抽象アクションです。

QActionについてのより多くの情報はここのQTドキュメンテーションで見つけることができます: http ://doc.qt.io/qt-5/qaction.html

Nukeメニューからコマンドを実行すると、実際にはMenuItemコンテナに関連付けられているQActionを呼び出すように指示しています。たとえば、[編集]メニューで[クローン作成]アクションを選択すると、ノードがクローン作成されます。これは、そのQアクションに割り当てられているコマンドです。

方法

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コンテナを検索し、次に.invoke()関数を介してそのMenuItemのQActionをアクティブにします。この場合の結果は、選択されたノードのクローンを作成することです。

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

この記事は役に立ちましたか?
/

We're sorry to hear that!

Please tell us why.
3人中3人がこの記事が役に立ったと言っています

コメント