Create a ticket

Q100354: How to activate a Nuke menu command using Python


This article covers how to pythonically activate a command from a Nuke menu system.



Nuke’s graphical user interface (GUI) is very customisable, and as part of that you can add, move or activate various items in the menu system, allowing users to set up custom pipelines with full integration into Nuke.

Nuke’s menu system is comprised of two main classes, Menus and MenuItems, definitions for which can be seen below:

  • Menu class: A container for other Menus or MenuItems
  • MenuItem class: A container for a QAction which performs an action in Nuke

The Menu and MenuItem classes are used to make the menu structures inside Nuke. You can also use them to make your own menu structures, allowing for custom menus. More information about the two classes can be found here: 

Menu class
MenuItem class

A QAction is a QT/PySide class and is an abstract action which can be used to perform commands.

More information about QActions can be found in the QT documentation here:

When you execute a command from a Nuke menu, you are actually telling a MenuItem container to invoke its associated QAction. For example, when you select the Clone QAction in the Edit menu, a node is cloned, as that is the command assigned to that QAction. 


In order to activate a command in Nuke's menu structure pythonically, you need to "find" the particular MenuItem container and invoke its associated QAction. This can be done using the code below:  

mainMenu ="Nuke")


The first line of code 

mainMenu ="Nuke")

returns the Menu class of the main Nuke menu toolbar.

If you're looking to access the nodes toolbar, this can be done with the same command by replacing “Nuke” with “Nodes”. 



The second line


uses the findItem() function to find the 'Clone' MenuItem container inside the 'Edit' Menu, then activates the QAction of that MenuItem via the .invoke() function. The result in this case would be cloning the selected nodes.

NOTE: To create the path to find a particular QAction in a menu system, you need to use / as separator every time you enter a sub menu. For example: Edit/Clone, Viewer/View/Next, etc.

Current valid menus to use with are:

'Nuke': the application menu

'Pane': the UI Panes & Panels menu

'Nodes': the Nodes toolbar (and Nodegraph right mouse menu)

'Properties': the Properties panel right mouse menu

'Animation': the knob Animation menu and Curve Editor right mouse menu

'Viewer': the Viewer right mouse menu

'Node Graph': the Node Graph right mouse menu

'Axis': functions which appear in menus on all Axis_Knobs.

Was this article helpful?

We're sorry to hear that

Please tell us why
5 out of 5 found this helpful