快捷键,菜单,菜单项 的做法。这类代码一般在menu.py里面。至于如何安装请参看installing Plug-ins.
nuke中现有的菜单:
-
Nuke -- 程序菜单在界面的最上面:
-
Window -- pane 在pane菜单下的内容菜单。
-
nodes 工具栏(在节点图上右键单击)
-
属性 右击属性panel的菜单
-
动画- 所有属性中动画按钮上的弹出菜单,右击Curve Editor的菜单
-
viewer 右击viewer的菜单
-
Node Graph 右击Node graph的菜单
-
Axis 所有Axis_knob的菜单
创建自定义菜单
m = nuke.menu('Viewer')
myMenu = m.addMenu('MyStuff')
给菜单添加icon
m = nuke.menu('Viewer')
myMenu = m.addMenu('MyStuff', icon = 'ohu_icon.png' )
创建自定义工具栏
myToolbar = nuke.toolbar('My nodes')
给toolbar添加item和给menu添加一样
myToolbar.addCommand('My Gizmo', lambda: nuke.createNode('NoOp' ) )
如果没给item指定toolbar,那将成为一个按钮:
否则,item作为菜单项( 像默认工具栏那样):
myToolbar.addCommand( 'My other Tools/tool A', lambda: nuke.createNode( 'NoOp') )
myToolbar.addCommand(' My Other tools/tool B', lambda: nuke.createNode('NoOp') )
给menu添加icon,那就在创建前明确指定。
myMenu = myToolbar.addMenu('My Gizmo', icon= 'ohu_icon.png' )
myMenu.addCommand( 'tool A', lambda: nuke.createNode('NoOp'))
myMenu.addCommand(' tool B', lambda: nuke.createNode('NoOp'))
创建自定义菜单项
给菜单添加自定义入口,请用menu.addCommand():
nuke.menu('Nuke').addCommand('MyMenu/my tool 1', lambda:nuke.message('yay, it works' ))
注意:上面的例子中,我们创建了叫MyMenu的菜单
利用lambda表达式创建的匿名函数要在菜单项调用时才执行,你可以将需要的命令打包进一个字符串:
nuke.menu('Nuke').addCommand('MyMenu/my tool 2', "nuke.message('yay, it works too')" )
也可以给菜单项赋予位于plug-in路径下的icon
nuke.menu('Nuke').addCommand('myMenu/my tool 2', "nuke.message('yay, it works too')", icon = 'ohu_icon.png')
要设置菜单项的位置请使用index参数:
nuke.menu('Nuke').addCommand('MyMenu/my tool 1.5', "nuke.message('yay, it works too')", index = 1 )
通过名字找到菜单,并在前面添加一个分割线:
m = nuke.menu('Nuke').findItem('MyMenu')
m.addSeparator()
nuke.menu('Nuke').addCommand('MyMenu/my tool 3', "nuke.message('yay, it works too')")
找到已存在的menu 项,并运行其函数:
m = nuke.menu('Nuke').findItem('Edit/Node/Filename/Show')
m.invoke()
停用菜单项:
m = nuke.menu('Nuke').findItem('Redner/Proxy Mode')
m.setEnable( False )
注意,菜单虽然禁止了,但快捷键依然可用。
绑定快捷键
给已存在菜单绑定快捷键,你可以有效地取代整个菜单项
给Axis2节点绑定快捷键。这个节点在Nodes菜单里(那就是,toolbar),在3D子菜单,其子项叫Axis。
nuke.menu('Nodes').addCommand('3D/Axis', lambda:nuke.createNode('Axis2' ), 'a' )
现在键盘上的a就能创建Axis节点。
当绑定快捷键时也可以修改. 用ctrl( mac上的 cmd) 作为修改:
- ctrl + 后跟键
- ~ 后跟键
例如:
nuke.menu('Nodes').addCommand('3D/Axis', "nuke.createNode('Axis2')", "ctrl+a')
nuke.menu('Nodes').addCommand('3D/Axis', "nuke.createNode('Axis2')", "`a')
用alt作为修改:
- alt+键
- # + 键
nuke.menu( 'Nodes' ).addCommand( '3D/Axis', "nuke.createNode( 'Axis2' )", 'alt+a')
nuke.menu( 'Nodes' ).addCommand( '3D/Axis', "nuke.createNode( 'Axis2' )", '#a')
用shift作为修改:
- shift + 键
- + 后跟键
nuke.menu( 'Nodes' ).addCommand( '3D/Axis', "nuke.createNode( 'Axis2' )", 'shift+a')
nuke.menu( 'Nodes' ).addCommand( '3D/Axis', "nuke.createNode( 'Axis2' )", '+a')
定义默认knob
修改默认knob值,请使用nuke.knobDefault()
nuke.knobDefalut('Blur.size', '77' )
上面的代码将所有blur节点的size控制默认值设置为77
当跳过节点类,新的默认值会应用到所有给定的控制上
nuke.knobDefault( 'channels', 'rgba')
上面的代码在节点创建时设置所有的channel为rgba。